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运行后,把与此程序同目录下的文件名键入前,显示的提示文字都没有乱码,但文件名输入后读出的文件内容遇到汉字就是乱码,有没有高手可以解决的???? 展开
#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运行后,把与此程序同目录下的文件名键入前,显示的提示文字都没有乱码,但文件名输入后读出的文件内容遇到汉字就是乱码,有没有高手可以解决的???? 展开
4个回答
展开全部
汉字都是用宽字符表示的,也就是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);//输出读取到的字符串
}
把宽字符分开读取的话,打印(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);//输出读取到的字符串
}
展开全部
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while((ch=fgetc(fp))!=EOF)
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
{
fflush(stdin);
putchar(ch);
//ch=fgetc(fp); 多了一句fgetc(fp)去掉好了
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |