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

c语言编程,用的visual6.0c++,学完c语言的课编了个小程序;如下:#include<stdio.h>#include<stdlib.h>#include<con... 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运行后,把与此程序同目录下的文件名键入前,显示的提示文字都没有乱码,但文件名输入后读出的文件内容遇到汉字就是乱码,有没有高手可以解决的????
展开
 我来答
戴静柏0Ep
2012-03-25 · TA获得超过1796个赞
知道小有建树答主
回答量:426
采纳率:0%
帮助的人:782万
展开全部
汉字都是用宽字符表示的,也就是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);//输出读取到的字符串
}
kaixingui2012
2012-03-25 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6499万
展开全部
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
2015-11-25 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1363万
展开全部
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
依兰彬歌
2015-11-16 · TA获得超过914个赞
知道小有建树答主
回答量:940
采纳率:0%
帮助的人:1287万
展开全部
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式