используя scanf и family для чтения в двух строках, разделенных пробелом из файла в c - PullRequest
0 голосов
/ 18 февраля 2011

Я пытаюсь прочитать две строки, разделенные пробелом от файла.

Что бы я ни пытался, я продолжаю инициализировать первую строку, но вторая строка всегда равна NULL.

Вот некоторые из форматировщиков, которые я пробовал: "%s%s", "%s %s", "%s[\n\t ]%s"

Есть идеи, что я делаю неправильно?

Я думаю, что это связано с внутренним буфером scanf - читает первый %s, затем помещает какой-то невидимый символ в буфер читает, что при втором %s, который затем читается, а вторая строка NULL когда закончено.

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

между вашей строкой, если есть просто один пробел

fscanf (..., "% s% s", ...); // вы знаете, как заполнить пробел, помеченный ...

но если номер пробела не известен:

char stack[YourscreenSize];
fscanf ( ..., "YourscreenSize[^\n]", stack );  // take all line in one data, 

потом разбери

если номер пробела не известен, (второй способ)

  • взять данные из файла
  • проверьте это, отправьте первый символ в функции isgraph, пробел это или нет
  • если это пробел, стереть сохраненные данные

сделать это, итеративно. Когда вы видите EOF перерыв от итерации, (вы можете проверить возвращаемое значение fscanf, чтобы узнать, читает ли он char или EOF)

1 голос
/ 18 февраля 2011

Как выглядят ваши струны?

Я не думаю, что ваша гипотеза о том, что fscanf () изменяет входные данные, помещая «какой-то невидимый символ в буфер», верна.

Скорее всего, ваши строки не соответствуют требованиям спецификатора формата% s.

...