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

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

}

输入文件名前的提示字都正确显示,可是读取文件中的汉字都是乱码,求高手解决,谢谢了
展开
 我来答
唐博1347
2012-03-25 · TA获得超过799个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:289万
展开全部
因为一个汉字是占2个字节的,所以你用一个char型去读取,输出肯定是乱码。
具体怎么用C实现我也不清楚
如果用C++,直接建一个char的数组,用cin往里面读,用cout输出就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2012-03-25 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6387万
展开全部
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 这里多了一句fgetc,去掉就好了!!!
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pmf2gzh
2012-03-25 · 超过10用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:37.2万
展开全部
把char改成int ?
在汉字两边加 /********** ***********/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大疆飞行侠
2021-08-20
知道答主
回答量:1
采纳率:0%
帮助的人:455
展开全部
你把文件用GBK格式保存,应该是可以的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
binglink
2012-03-25 · TA获得超过1101个赞
知道小有建树答主
回答量:639
采纳率:0%
帮助的人:461万
展开全部
一个汉字两个字节, putchar一次输出一个字节,怎么可以输出汉字呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式