【问题标题】:How Can I Get getc() to Return a Character Besides a Smiley Face?如何让 getc() 返回笑脸以外的字符?
【发布时间】:2011-12-06 16:36:12
【问题描述】:

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

【问题讨论】:

    标签: c file getc


    【解决方案1】:

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

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

    对:

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

    【讨论】:

    • 非常感谢。你的解释实际上帮助很大。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多