如何阅读仅包含fscanf字母的字符串?

时间:2011-04-18 00:52:53

标签: c scanf

我一直在努力找出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 个答案:

答案 0 :(得分:2)

%[扫描说明符不会跳过前导空格。在它之前或末尾添加一个空格代替s。你还有100和101倒退,因此是一个严重的缓冲区溢出错误。

答案 1 :(得分:1)

不需要s。

以下是一些尝试:

从fscanf打印出返回值,并确保它为1。

通过使用fgetc获取下一个字符并将其打印出来,确保fscanf消耗空白。