仅读字母字符 - C.

mas*_*son 5 c scanf

我正在打开一个文本文件,只想阅读字母单词.例如,如果我有一个带有"Hello-World Hey"的文本文件.我想读"你好","世界","嘿"这几个字.

问题是我不确定这个输出的"格式说明符"应该是什么.我尝试了无数组合,但没有一个像希望的那样工作.

FILE *fpin; 
char str[50];

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

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

Jon*_*ler 8

你快到了; 应该使用扫描集,但扫描集也没有s转换.

while (fscanf(fpin, "%49[a-zA-Z]", str) == 1) {
Run Code Online (Sandbox Code Playgroud)

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...
}
Run Code Online (Sandbox Code Playgroud)