我一直在努力找出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时 - 我只能从我正在阅读的文件中获取第一个单词以打印出来。
答案 0 :(得分:2)
%[
扫描说明符不会跳过前导空格。在它之前或末尾添加一个空格代替s
。你还有100和101倒退,因此是一个严重的缓冲区溢出错误。
答案 1 :(得分:1)
不需要s。
以下是一些尝试:
从fscanf打印出返回值,并确保它为1。
通过使用fgetc获取下一个字符并将其打印出来,确保fscanf消耗空白。