为啥我吧feof放到while里就多写一个字符呢

改成while(!feof)就多写了一个字符,改正if然后放到
fputc前边就不会,feof究竟是怎么移动的啊,难道putc也会使光标向后移动?

img

while(!feof)当然会有问题了,你这是先do,然后再判断。
比如当前判断最后一个字符,feof还是假,你接着循环,那么下一个就是feof了,但你先执行fputc啊,所以就写入了一个无效的东西。然后再判断!feof才结束循环
你要么改成while循环,要么就像你现在这样,在fputc前判断


可以查看手册:c语言-feof() 中的内容