0

これが私のコードです。

#include<stdlib.h>
#include<stdio.h>
int main(int argc,char** argv)
{
    char a;
    a=9;
    FILE * fp;
    fp=fopen(argv[1],"r");
    while(a!= EOF)
    {
        a=fgetc(fp);
        printf("\n%d",a);
    }
}

これへの出力は問題ありませんが、最後に-1の奇妙な文字が表示されます(整数値を出力しているため.

だけでそれを止める方法EOFは?また、このキャラクターは何ですか?

4

4 に答える 4

2

他の回答の方法に加えて、次のようにすることもできます。

while ((a = fgetc(fp)) != EOF)
{
    printf("%d\n", a);
}

これで、いくつかの代替ソリューションがあります。:)

編集: R ..が親切に思い出させてくれるように、タイプもに変更する必要がありaますint

于 2012-02-21T13:25:53.807 に答える
2

You are printing the EOF character (the -1) as you do not check if EOF was encountered immediately after fgetc(). Change the structure of the loop to:

int a; /* not char, as pointed out by R... */

for (;;)
{
    a = fgetc(fp);
    if (EOF == a) break;
    printf("\n%d", a):
}
于 2012-02-21T13:05:01.360 に答える
1

その型はの戻り型であり、EOFを正しく表すために必要であるため、haa型を作成する必要があります。intfgetc()

于 2012-02-21T14:00:43.340 に答える
0

whileこの条件でを停止してみませんか:

do {...}while(a != EOF)

私はそれを読んだ後にEOF値を取得したと思います。したがって、サイクルを余分に実行します

于 2012-02-21T13:05:11.477 に答える