5

我正在打开一个文本文件,并且只想阅读字母单词。例如,如果我有一个带有“Hello-World Hey”的文本文件。我想读“Hello”、“World”、“Hey”这些词。

问题是我不确定这个输出的“格式说明符”应该是什么。我尝试了无数种组合,但都没有像希望的那样奏效。

FILE *fpin; 
char str[50];

while (fscanf(fpin, "%s[a-zA-Z]", str) != EOF) {
    // do something with str
}

任何帮助将非常感激!谢谢。

4

2 回答 2

8

你快到了;应该使用扫描集,但扫描集也没有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...
}
于 2013-04-14T00:16:58.660 回答
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
于 2013-04-14T00:08:43.137 回答