c语言,用的visual 6.0 c++,中文乱码

c语言课程上完了,自己编了一个小程序,打开一个文本文件,并读取里面的内容;
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

main()
{FILE *fp;
char f[10],ch;
printf("*****读书程序******\n\n");
printf("*****此程序仅供txt格式文本使用******\n\n");
printf("输入文件名(格式:文件名.后缀):");
scanf("%s",f);
if((fp=fopen(f,"r"))==NULL)
{printf("此文件不存在!!\n"); getch();exit(0);}

while((ch=fgetc(fp))!=EOF)
{fflush(stdin);
putchar(ch);
ch=fgetc(fp);
}
getch();

fclose(fp);

}

输入文件名前的提示字都正确显示,可是读取文件中的汉字都是乱码,求高手解决,谢谢了

第1个回答  2012-03-25
因为一个汉字是占2个字节的,所以你用一个char型去读取,输出肯定是乱码。
具体怎么用C实现我也不清楚
如果用C++,直接建一个char的数组,用cin往里面读,用cout输出就可以了
第2个回答  2012-03-25
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 这里多了一句fgetc,去掉就好了!!!
}本回答被提问者采纳
第3个回答  2012-03-25
把char改成int ?
在汉字两边加 /********** ***********/
第4个回答  2021-08-20
你把文件用GBK格式保存,应该是可以的
第5个回答  2012-03-25
一个汉字两个字节, putchar一次输出一个字节,怎么可以输出汉字呢
相似回答