c - 如何在不移动到下一个文件指针位置的情况下获取文件指针值(在 C 中)

标签 c pointers file-io

有没有办法在没有 fgetc 的情况下找到存储在文件指针中的字符。 假设我在一个名为 apple.txt 的文件中有一个词“steve jobs”是不是有类似的东西

int main(int argc,char *argv[])
  {
   FILE *fp=fopen("apple.txt","r");
   if(fp=='s'&&(fp+2)=='e')
     printf("steve is there");
   else
     printf("Steve not there");
   fclose(fp);
  }

显然,这并没有真正起作用!它只是打印类似 C forbids comparison b/n pointer n int 的内容。即使我尝试在 (fp+2) 和 fp 前添加 *,它也说不匹配 operator==

我相信函数 fgetc(FILE *) 的工作方式是获取 unsigned char,然后将指针移动到下一个位置。是否有任何功能可以在不移动指针的情况下获取字符,并且上面的代码是否可以通过任何其他方式实现?!

最佳答案

您可以使用 getcungetc。阅读有关它的文档(您只能有一个推回字符)。

在某些系统(尤其是 Linux 等 Posix 系统)上,您可以将文件的一部分映射到内存中。阅读更多关于 mmap system call 的信息这使您可以将文件的一部分视为内存段。 (mmap 不可用于不可搜索的文件,如管道或套接字;它主要适用于“磁盘”文件)。

关于c - 如何在不移动到下一个文件指针位置的情况下获取文件指针值(在 C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933403/

相关文章:

C strftime 有结束十六进制字符

c - 如何使用已调整的指针安全地释放内存

c - (nil) c 中 int 指针返回的值

c - 矩阵幂和指针

c++ - 从模板参数指向方法的指针

android - 如何将内存中的Android文件权限更改为MODE_PRIVATE?

c - 双向链表搜索函数的C实现

c - 在c中读取和写入xls和doc文件

java - 我如何通过读取 block block 写入文件数据并写入netty中的 channel ?

windows - 为所有用户存储具有读\写权限的应用程序数据的最佳目录?