【问题标题】:what is the address pointed by file pointer?文件指针指向的地址是什么?
【发布时间】:2016-07-12 12:19:14
【问题描述】:
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
     FILE *file1;
     char c;
     file1=fopen("find1.txt","r");


      if(file1==NULL)
       {
            printf("\n file doesnt exist\n");
            exit(1);
       }

      else
      {
          while(1)
          {

              c=fgetc(file1);

              if(feof(file1))
              {

                  break;
              }


             putc(c,stdout);

          }
      }


  }

我认为这段代码的工作原理是 fgetc() 从文件指针指向的文件中取出一个字符并将该字符放入“c”中。下次它从文件中取出下一个字符并将其放入“c”中。文件指针是否增加并指向下一个字符?还是以任何其他方式处理?

【问题讨论】:

  • file1 是一个不透明的指针,它可能指向 struct,其中可能包含许多字段,其中一些字段可能已更改。 (例如递增)每个fgetc
  • FILE * 只是一个指向某个内存位置的指针,它不会被文件上的 RW 操作更改。但文件当前位置在每次读/写后自动递增。
  • @serhio 这意味着我可以在读取文件时跟踪地址?我想在文件中查找单词。
  • C 库的设计有意向您隐藏FILE 的内容。唯一受支持的使用方式是使用 C 库中的函数。查看用于读取和设置文件位置的库函数。
  • 看起来对文件定位信息很有用:stackoverflow.com/questions/12119132/…

标签: c file-pointer


【解决方案1】:

file1 指针本身不会递增。它指向的 FILE 对象将包含(除其他外)指向当前流位置的指针,并且 that 将在您读取或写入文件时更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2013-05-09
    • 2020-12-30
    相关资源
    最近更新 更多