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

pst*_*p92 0 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;
}
Run Code Online (Sandbox Code Playgroud)

cni*_*tar 6

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

while((c = getc(fp) != EOF))
                          ^
{
        putchar(c);
}
Run Code Online (Sandbox Code Playgroud)

对:

while((c = getc(fp)) != EOF)
{
        putchar(c);
}
Run Code Online (Sandbox Code Playgroud)