近日学习fscanf的用法时,遇到了困难,出现2个问题: 1.读取数据为乱码。 2.出现死循环的情况。 以下为解决方法: 首先,数据乱码的问题,目前发现2种情况: 1.fscanf函数参数2的格式与文本不符,主要出现在中英文符号的问题上。 2.代码编码和txt文本的编码不符。 代码我用的是ANSI,但是不知道为什么txt文本的编码格式UTF-8,另存为ANSI格式就解决了我的问题。 其次是死循环的问题: 其实就是因为上面编码不一致造成了fscanf读取失败,而读取失败时,文件指针不会移动,造成了一直无法读到文件尾,就出现了死循环。 另外,还有一点就是fscanf参数2里的空格和制表符是可以混用的,个数不同也不会影响,只与位置有关。
#include <stdio.h>
int main(void){ FILE *file; char name[32]; int age; char c;
file = fopen("p9.txt","r");
if(!file){
printf("文件打开失败");
return 1;
}
while(1){
fscanf(file,"姓名:%s age:%d\n",name,&age);
printf("%s,%d\n",name,age);
if(feof(file)){
break;
}
}
fclose(file);
return 0;
}