除了笑脸之外,我怎样才能让getc()返回角色?

时间:2011-10-13 05:57:01

标签: c file getc

我正在尝试用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;
}

1 个答案:

答案 0 :(得分:6)

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

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

右:

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