Как я могу получить getc (), чтобы вернуть персонажа, кроме смайлика? - PullRequest
0 голосов
/ 13 октября 2011

Я пытаюсь написать простой клон 'cat' на 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;
}

1 Ответ

6 голосов
/ 13 октября 2011

Поскольку реляционный равный тест (!=) имеет больший приоритет, чем присваивание (=), вы просто сохраняете 1 в c на каждой итерации.Иначе говоря, один из скобок находится не в том месте.

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

Справа:

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