c语言中怎样读出有中文的文本文件?

#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("d:\\test.txt","r"))==NULL)
{
printf("file cannot open!");
exit(0);
}
ch=fgetc(fp);
while(!feof(fp))
{
printf("%c\n",ch);
ch=fgetc(fp);
}
fclose(fp);
}
现在test.txt文件中是中文,输出的是一堆“?”,怎么回事?

中文是占2个字符,你的ch只有一个字符就换行了,所以打不出来,把打印时的换行去掉就行了
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("d:\\test.txt","r"))==NULL)
{
printf("file cannot open!");
exit(0);
}
ch=fgetc(fp);
while(!feof(fp))
{
printf("%c",ch); /*去掉换行*/
ch=fgetc(fp);
}
fclose(fp);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-22
一个char是一个字节,一个汉字2个字节。
所以需要定一个字符数组才能够正确完整的显示文字信息。
第2个回答  2008-10-22
我认为c语言是不可能的,操作系统下的c命令符可以。
相似回答