У меня проблемы с чтением и разделением многострочного пользовательского ввода с помощью функции strtok. Мне нужно разделить его на промежутки между ними, однако я думаю, что strtok продолжает добавлять дополнительную строку?
Например:
Пользователь вставит блок текста, например:
324 A 1 D F
829 Z 3 3 F G
1234 C 3 F G
234 D 2 3
Когда я распечатал вывод токенов, он показал мне:
324 A 1 D F
829 Z 3 3 F G
1234 C 3 F G
<--- где случайная новая строка генерируется после нажатия enter --->
234 D 2 3. <- отображается только после того, как сгенерирована случайная строка .. </p>
Строки с 1 по 3, напечатанные в консоли сразу после того, как я вставил блок в консоль.
После нажатия Enter, он создает новую строку между ними и, наконец, печатает последнюю строку. Затем я должен нажать Enter еще раз для завершения программы.
Это мой код:
int main(void) {
char input[256];
int done = 1;
while (done!=0){
fgets(input,256,stdin);
char* t;
printf("\n");
t=strtok(input, " \n");
if (*t == '\n'){
done = 0;
} else{
while (t!= NULL){
printf("%s " ,t);
t = strtok(NULL, " \n");
}
}
}
}