我正在打开一个文本文件,只想阅读字母。 例如,如果我有一个带有“Hello-World Hey”的文本文件。我想读“你好”,“世界”,“嘿”等字样。
问题是我不确定此输出的“格式说明符”应该是什么。我尝试了无数组合,但没有一个像希望的那样工作。
FILE *fpin;
char str[50];
while (fscanf(fpin, "%s[a-zA-Z]", str) != EOF) {
// do something with str
}
任何帮助将不胜感激!感谢。
答案 0 :(得分:7)
你快到了;应该使用扫描集,但扫描集也没有s
转换。
while (fscanf(fpin, "%49[a-zA-Z]", str) == 1) {
49防止缓冲区溢出(是的,它必须比数组的维度小一个。)
当然,这适用于第一个词;然后,您需要跳过非单词字符才能阅读下一个单词,这样您就可以:
while (fscanf(fpin, "%49[a-zA-Z]", str) == 1)
{
...do something with word in str...
if (fscanf(fpin, "%49[^a-zA-Z]", str) != 1)
...decide what to do...
...but remember one problem might be that the 'word' was too long...
}
答案 1 :(得分:2)
我自己编程很新,但也许这就是你要找的东西。 希望它有所帮助。
#include <ctype.h>
int i = 0;
FILE *fpin;
char c, str[50];
while ((c = fgetc(fpin)) != EOF)
{
if(isalpha(c))
str[i++] = c;
}
str[i] = '\0';
// do something with str