我正在使用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);