关于fscanf乱码和死循环的解决方法

it2022-05-05  247

近日学习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;

}


最新回复(0)