我试图了解文件指针增加的含义。

我已经声明了文件指针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/

10-14 04:46