我正在使用fscanf读取文件。我想忽略非字母字符,如逗号,\,:,和点。
这是我的代码:

FILE *fp;
fp = fopen(fl,"r");
char c[50];

while(fscanf(fp, "%s" ,c)!= EOF){
    linkLst(c);

}

fclose(fp);

如何逐字读取文件而忽略非字母字符?
{
部分文件如下
答案如下:
1)世界上最复杂的书面语言是什么?(提示:它
使用四个字符集。)>>日语
2)哪种语言的词汇主要来源于阿拉伯语(约70%,
我听说),但是用罗马字母?(我想知道你在哪里找到的
答案!)>>马耳他语
3)哪种非罗曼史语言在字母N上使用波浪号(~)?>>爱沙尼亚语
}

最佳答案

您必须创建一个读取的字符串的副本,以过滤掉非字母数字字符。
scanf之后执行此操作

char str[50];
int index = 0;
int index2 = 0;
while(c[index] != '\0') {
    if (isalpha((unsigned char)c[index]))
        str[index2++] = c[index];
    else{
        str[index2] = '\0';
        if (index2 != 0)
            linkLst(str);
        index2 = 0;
    }
    index++;
}
str[index2] = '\0';
if (index2 != 0)
    linkLst(str);

08-16 19:31