C语言程序输出文件到屏幕上最后结尾出现一个乱码

来源:百度知道 编辑:UC知道 时间:2024/07/01 03:54:49
打开一个文件前面都对但是最后结尾处出现乱码,老实说仅仅靠while(!(feof))这一个判断条件不够,请高手指点一下!!!!!!!!!!!!!!!!!!!!!!!!!!!
比如这个程序
#include<stdio.h>
#include"string.h"
#include"stdlib.h"

void main()
{ FILE *in;

char *article;

char inFile[30];

printf("Please Input The Infile:\n");
scanf("%s",inFile);getchar();

if((in=fopen(inFile,"rb"))==NULL)
{ printf("FAIL TO OPEN!!!\n");
exit(0);
}

while(!feof(in)) fputc(fgetc(in),stdout);

fclose(in);

}

导致出现乱码的可能很多,你的文件是ASCII还是二进制?
如果是ASCII,你用什么输出,是读一个字符就输出还是读一段字符串后输出,如果读一段就输出有可能出现乱码?
如果是二进制,你是否按二进制的读法打开的?
另外,!(feof)足够判断文件是否完,请吧具体代码或代码主要部分贴出来,大家看看

while(!feof(in))
fputc(fgetc(in),stdout);

这个循环的结束条件是 fgetc(in) 返回了结束符,就是结尾多出来的那个字符
所以加上 结束符 EOF 的判断 就可以了

#include<stdio.h>
#include"string.h"
#include"stdlib.h"

void main()
{ FILE *in;

char ch;

char *article;

char inFile[30];

printf("Please Input The Infile:\n");
scanf("%s",inFile);getchar();

if((in=fopen(inFile,"rb"))==NULL)
{ printf("FAIL TO OPEN!!!\n");
exit(0);
}

while(!feof(in))
{
ch = fgetc(in);
if (ch != EOF)
fputc(ch ,stdout);
}
fclose(in);

}