c - c中的文件指针

标签 c pointers

我试图理解文件指针增量意味着什么。

我已经声明了文件指针 fp 并假设当我对任何文件(例如 test99.txt)使用 fopen 并尝试读取它时 编译器动态分配内存(当然是在堆中,因为我认为内部 fopen 使用 malloc 以便将文件放入主内存中) 一旦文件流/文件数据放入内存中,我假设 fp 包含该文件流的起始地址。 现在将 fp 加 1 (++fp),即 FILE 类型的指针,将按该文件内数据/流的总大小增加/跳跃 fp 的位置 测试99.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* 指针,它仅指向 fopen 为您分配的一个 FILE 结构。

关于c - c中的文件指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32049884/

相关文章:

c - 如何在 C 中访问链表中的下一个元素?

c - 在 scanf 中多次使用相同的整数

c结构问题

c++将值设置为特定地址

c - 如何从 .t​​xt 文件读取文本,然后将其存储在记录(数据结构)中?

c - 在 KDE 平台上扩展 Zend Engine,gVIM 是正确的选择吗?

c - pthread 函数返回 vector ?

c++ - 删除 C++ 指针

C++:指针、循环变量和结构的问题

c - 使用 memset() 函数及其如何影响内存块