Прочитать весь стандартный ввод в буфер - PullRequest
0 голосов
/ 30 октября 2018

У меня есть ввод с символами новой строки, и мне нужно прочитать его в буфер. Формат ограничен структурой.

Ввод выглядит так:

{
[
5.5
;
1
]
,   [   1;  2   ]   ,[3; 4]}

И код, который у меня есть, выглядит так:

char *s2 = NULL;
size_t n = 0;
int slozZav = 0;
int hranZav = 0;
getline(&s2, &n, stdin);
if(sscanf(s2, " %c [ %lf ; %lf ] , [ %lf ; %lf ] , [ %lf ; %lf ] %c", &s1, &Ax, &Ay, &Bx, &By, &Cx, &Cy, &s) == 8 && s=='}' && s1=='{' && slozZav % 2 == 0 && hranZav % 2 == 0) { ... }

Правильно ли я поступаю с getline? Я попытался прочитать его с помощью scanf(), но затем я не могу скопировать стандартный ввод в буфер.

1 Ответ

0 голосов
/ 30 октября 2018

getline читает, пока не встретит новую строку; следовательно, он остановится, когда вы нажмете ввод в первый раз.

Чтобы прочитать всю сканируемую структуру, попробуйте:

getdelim(&s2, &n, '}', stdin);

Таким образом, новые строки также будут считываться, и чтение будет остановлено после прочтения разделителя }.

...