有没有办法在没有 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,然后将指针移动到下一个位置。是否有任何功能可以在不移动指针的情况下获取字符,并且上面的代码是否可以通过任何其他方式实现?!
最佳答案
您可以使用 getc
和 ungetc
。阅读有关它的文档(您只能有一个推回字符)。
在某些系统(尤其是 Linux 等 Posix 系统)上,您可以将文件的一部分映射到内存中。阅读更多关于 mmap
system call 的信息这使您可以将文件的一部分视为内存段。 (mmap
不可用于不可搜索的文件,如管道或套接字;它主要适用于“磁盘”文件)。
关于c - 如何在不移动到下一个文件指针位置的情况下获取文件指针值(在 C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933403/