Как читать в строках, которые содержат только буквы алфавита с fscanf? - PullRequest
3 голосов
/ 18 апреля 2011

Я изо всех сил пытался выяснить форматирование fscanf. Я просто хочу прочитать в файле слов, разделенных пробелами. И я хочу отбросить все строки, содержащие не алфавитные символы.

char temp_text[100];
while(fscanf(fcorpus, "%101[a-zA-Z]s", temp_text) == 1) {
  printf("%s\n", temp_text);
}

Я пробовал приведенный выше код как с, так и без 's'. Я прочитал в другом потоке stackoverflow, что s при таком использовании будет интерпретироваться как литерал 's', а не как строка. В любом случае - когда я включаю s и когда я не включаю s - я могу получить только первое слово из файла, который я читаю, для распечатки.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Спецификатор сканирования %[ не пропускает начальные пробелы. Либо добавьте пробел перед ним или в конце вместо вашего s. Также у вас есть ваши 100 и 101 в обратном направлении и, следовательно, серьезная ошибка переполнения буфера.

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

s не требуется.

Вот несколько вещей, которые можно попробовать:

Распечатайте возвращаемое значение из fscanf и убедитесь, что оно равно 1.

Убедитесь, что fscanf использует пробел, используя fgetc для получения следующего символа и распечатав его.

...