0

我正在尝试用 C 编写一个简单的“猫”克隆。我正在运行 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

由于关系相等测试 ( !=) 比赋值 ( ) 具有更高的优先级,因此=您只需1在每次迭代时将其存储在 c 中。否则,括号之一是在错误的位置。

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

正确的:

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