C语言文件fscanf读写中文乱码
#include<stdio.h>FILE* stream;
void main(void)
{
long l;
float fp;
char s;
char c;
stream = fopen("fscanf.txt","r");
if(stream == NULL)
{
printf("the file is opened error!\n");
}
else
{
fscanf(stream,"%s",s);
fscanf(stream,"%ld",&l);
fscanf(stream,"%f",&fp);
fscanf(stream," %c",&c);
printf("%s\n",s);
printf("%ld\n",l);
printf("%f\n",fp);
printf("%c\n",c);
fclose(stream);/*关闭*/
}
}
如题 文件中内容为:
字符串 92222 3.14 s
在读取中文的时候就会乱码 如何解决呢 fscanf.txt的内容也发下 本帖最后由 jackz007 于 2021-6-22 12:40 编辑
#include<stdio.h>
int main(void)
{
FILE * stream ;
char s , c ;
long long l ;
if ((stream = fopen("fscanf.txt","r")) != NULL) {
fscanf(stream , "%s %lld %c" , s , & l , & c) ;
printf("%s %lld %c\n" , s , l , c) ;
fclose(stream) ;
} else {
fprintf(stderr , "the file is opened error!\n") ;
}
}
如果用上面的代码还是看不到中文字符,八成是汉字编码问题,可以通过以下方法进行确定:
如果是在 Windows 下,那就 CMD 到 "fscanf.txt" 所在路径,键入这个命令:
type fscanf.txt
如果是在 Linux 下,那就 CD 到 "fscanf.txt" 所在路径,键入这个命令:
cat fscanf.txt
然后看看系统响应的内容是否是:
字符串 92222 3.14 s
如果不是,那就足以肯定,是 "fscanf.txt" 的汉字编码存在问题。 jackz007 发表于 2021-6-22 12:00
如果用上面的代码还是看不到中文字符,八成是汉字编码问题,可以通过以下方法进行确定:
...
我找到解决办法了 确实是编码问题 右键另存为选择ANSI编码就好了 把文档utf-8改成ANSI
就行了 星梦66 发表于 2021-6-22 22:45
把文档utf-8改成ANSI
就行了
文字就不会乱码了
页:
[1]