请大家帮我解决一下这个C语程序

来源:百度知道 编辑:UC知道 时间:2024/05/14 01:32:42
#include <stdio.h>
int main(void)
{
FILE *in,*out;
char ch;
if((in = fopen("aa6.txt","r")) == NULL)
{
printf("cannot open this file\n");
return 0;
}
if((out = fopen("aa7.txt","w")) == NULL)
{
printf("cannot open this file\n");
return 0;
}
while(!feof(in))
{
ch = fgetc(in);
fputc(ch,out);
putchar(ch);

}
fclose(in);
fclose(out);
return 0;
}
如果我在aa6.txt这个文本里存在sdsdsdsdsds
这个程序的结果在aa7.txt这个文本里面怎么会不一样呢最后不知多了个什么字符,
请帮帮我!!

嗯,那个不是\0的问题。

fgetc所认为的结尾和feof所认为的结尾不一样,这个是导致多数出一个字符的原因。fgetc所认为的结束是:EOF
所以改为
while(!feof(in))
{
ch=fgetc(in);
if (ch==EOF) break;
fputc(ch,out);
}
就行了。这个是函数本身的BUG。记住就行。

因为你在aa6.txt中的字符串末尾有个\O结尾!!
在写到aa7.txt中当然就多了一个东西了!!
自己改改
用个IF
在aa6.txt中遇见\0把他变成\n;
看看好用不!!
我毕业设计的时候好像用过 有点想不起来了
要是不对 别骂人 谢谢