0

C で単純な 'cat' クローンを作成しようとしています。Windows 7 を実行していて、MinGW コンパイラを使用しています。ただし、プログラムを実行すると、テキスト ファイルが返されますが、各文字が「☺」文字に置き換えられます。前もって感謝します。

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i;
    FILE *fp;
    int c;

    for(i = 1; i < argc; i++)
    {
        fp = fopen(argv[i], "r");

        if(fp == NULL)
        {
            fprintf(stderr, "cat: can't open %s\n", argv[i]);
            continue;
        }

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

        fclose(fp);
    }

    return 0;
}
4

1 に答える 1

6

リレーショナルイコールテスト(!=)は代入()よりも優先されるため、反復ごとにcに=格納するだけです。1別の言い方をすれば、角かっこの1つが間違った場所にあります。

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

右:

while((c = getc(fp)) != EOF)
{
        putchar(c);
}
于 2011-10-13T05:58:42.617 に答える