うーん……??

Q1
while ((c = getc(fp)) != EOF) {
putchar(c);
}

これ↑だとEOFを検出したらすぐ終了するのに


while (feof(fp)==0) {
c = getc(fp);
putchar(c);
}

これ↑だとEOFを出力してしまうのはなぜ…?


Q2.ファイルの終わりに'\0'を書き込む必要はないのですか?

基本的な質問でごめん、誰か教えてくれないかな…。