c语言中读取及输出汉字的问题

#include<stdio.h>#include<stdlib.h>voidmain(){FILE*stream;charch[3];chartemp;if((stre... #include <stdio.h>
#include <stdlib.h>

void main()
{
FILE *stream;
char ch[3];
char temp;

if((stream=fopen("d:\\new1.txt", "rt"))==NULL)
{
perror("cannot open the file!\n");
exit(1);
}
/* while(feof(stream)==0)
{
/*fread(ch, sizeof(ch), 1, stream);
printf("%s\n", ch);
printf("%c%c\n", ch[0], ch[1]);*/

/*fgets(ch, 1, stream);
printf("%s\n", ch);*/

/*fread(&temp, sizeof(temp), 1, stream);
putchar(temp);*/

/*fscanf(stream, "%c", &temp);
printf("%c", temp);*/

//}
fgets(ch, 3, stream);
printf("%s\n", ch);///这种写法有问题对ch数组有什么要求?
fclose(stream);
}
/*
d:\\new1.txt 里面是2个汉字,随便写的,请问为什么前2种写法,不能正确显示出来
汉字,但是后2中写法却可以?问题出在那里?还有没有别的写法了?

不好意思,我最多只能悬赏100分,但是如果回答的好,我可以加分
*/
zhusisi007你的2中方法都不可行,
1. 不可能定义一个比文本长度还长的数组
2. fread(ch, sizeof(ch), 1, stream);
printf("%s\n", ch); //或者用printf("%c%c\n",ch[0],ch[1]);单个输出
你改成printf("%s", ch) 把\n去掉才可以。

其实你可以很随意的输出半个汉字。。
void main()
{
char ch;
FILE *stream;

if((stream=fopen("d:\\new1.txt", "r"))==NULL)
{
perror("couldnot open the file!\n");
exit(1);
}

while(feof(stream)==0)
{
ch=fgetc(stream);
printf("%c", ch);
}
}
展开
 我来答
wqp13774678377
2009-04-13
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
我觉得你将半个汉字输到屏幕上,由于与它对应的有ASCII码存在。
所以你看不到汉字。

但是你如果将它输到文件里面,再打开文件,应当就可以看见(操作系统可以判断,它是否是汉字,如果是汉字,它会再读后面那个字节)

以上仅仅是个人观点,你可以试一下。我记得我曾经也碰到这个问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jverson2009
2009-04-11 · 超过15用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:53.5万
展开全部
没错,一个汉字实际上是由2个char组成的,所以前两种写法就应该改为:
fread(ch, 4*sizeof(ch), 1, stream);
printf("%s\n", ch);
printf("%c%c%c%c\n", ch[0],ch[1],ch[2],ch[3]);
fgets(ch, 4*sizeof(ch), stream);
printf("%s\n", ch);
再好好看看,肯定能行的!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忘至白葬不情必0T
2009-04-09 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
有点乱,没仔细看,但是我知道的是,一个汉字实际上是由2个char组成的.所以要想用一个字符串来存2个汉字,加上字符串结束符,必须是char ch[5];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
放弃见你
2009-04-09 · TA获得超过159个赞
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
有点乱,没仔细看,但是我知道的是,一个汉字实际上是由2个char组成的.所以要想用一个字符串来存2个汉字,加上字符串结束符,必须是char ch[5]; 加油吧,你可以成功。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qdq200821
2009-04-16 · 超过35用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:0
展开全部
zhusisi007 所说的是对的,但是在VC环境,我想楼主是不是在TC2.0的环境下编译的,貌似TC2.0不支持中文,如果你非在TC中显示中文,可以下载TC2.0中文版。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式