【问题标题】:How can a while loop increment without an explicit command to do so in C?在 C 中没有明确命令的情况下,while 循环如何递增?
【发布时间】:2018-09-13 22:59:57
【问题描述】:

我是 C 新手,一直盯着这段代码看了一段时间:

void readEntireFile(){
    int ch;
    FILE *fp;  // pointer to a file type
    fp = fopen("/some/path/file", "r"); // Change to match your path
    ch = getc(fp);
    while (ch != EOF){  // keep looping until End Of File
        putchar(ch);    // print the characters read
        ch = getc(fp);
    }
    fclose(fp);
}

此函数创建一个指向文件的指针,获取第一个字符,并且只要该字符不是 EOF 字符,就打印该字符。这一直持续到到达 EOF 字符。

我的问题很简单:为什么指针每次都继续指向下一个字符?我看不出它是如何增加的,我真的很困惑!

编辑:除了下面的答案,this question 也帮助我理解了。

【问题讨论】:

  • FILE 是一个依赖于平台的结构,其中包含对描述符的访问(或平台用于文件访问的任何内容)、缓冲等。FILE* 不是增加或改变。指向对象的数据within可能是(尤其是缓冲的),并通过标准库的文件io函数完成

标签: c


【解决方案1】:

int getc ( FILE * stream ); 从流中获取一个字符。

返回指定流的内部文件位置指示符当前指向的字符。然后内部文件位置指示器前进到下一个字符。 (增量。) 具体是哪一行:

ch = getc(fp);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2014-04-13
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多