c语言运行输出汉字,出现乱码,用的visual 6.0c++

c语言编程,用的visual 6.0c++,学完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("error!!\n");exit(0);}

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

fclose(fp);
exe运行后,把与此程序同目录下的文件名键入前,显示的提示文字都没有乱码,但文件名输入后读出的文件内容遇到汉字就是乱码,有没有高手可以解决的????

汉字都是用宽字符表示的,也就是2个char的大小
把宽字符分开读取的话,打印(putchar(ch);)的就是乱码

每次读取固定长度的字符串,然后以字符串的形式输出,就没有问题了,修改如下:
只需要对while循环进行下修改就好了
char data[100] = "";
while(!feof(fp))//判断是否到文件尾了
{
fflush(stdin);
//putchar(ch);
//ch=fgetc(fp);
fgets(data, 99, fp);//读取99个字符,最后一个字符用来放'\0'
printf("%s", data);//输出读取到的字符串
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-25
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}本回答被提问者采纳
第2个回答  2015-11-25
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
第3个回答  2015-11-16
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
相似回答