我试图了解文件指针增加的含义。
我已经声明了文件指针fp并假设当我对任何文件使用fopen时(例如test99.txt),然后尝试读取它
编译器动态分配内存(在课程堆中,因为我认为内部fopen使用malloc以便将文件放入主内存中)
并且一旦文件流/文件数据放入内存,则假定fp包含该文件流的起始地址。
现在将fp加1(++ fp),这是FILE类型的指针,将根据该文件内数据/流的总大小来增加/跳跃fp的位置
test99.txt。如果不是,假设增加fp会将fp指针移动到文件流中的下一个字符(1个字节),那么为什么下面的输出呢? (为什么fp移动了16个字节:请参见diff)
我在哪里误会。
信息:文件大小为66字节(8KB)。在64位计算机(ia64 hp服务器)的unix平台上使用程序。编译器属于HP HP-ACC-Link。 C程序
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char ch;
fp=fopen("/home/akhils/file_dir/test99.txt","r");
printf("Address of file is %d", fp);
printf("\nLet's see value of ++fp %d\n", ++fp);
fclose(fp);
}
Output : Address of file is 2130569600
Let's see value of ++fp 2130569616
最佳答案
您不应该递增FILE*
指针,它仅指向FILE
为您分配的一个fopen
结构。
关于c - C中的文件指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32049884/