【发布时间】: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