我用以下方式打开了一个文件:
fp = fopen("some.txt","r");
现在在这个文件中,第一个字节可以说40个字节是不必要的数据垃圾,所以我想删除它们.但我无法从该文件中删除该数据,修改或
在没有不必要的数据的情况下创建该文件的副本.
所以我想创建另一个指向文件的虚拟FILE指针,当我将这个虚拟指针传递给执行以下操作的任何其他函数时:
fseek ( dummy file pointer,SEEK_SET );
然后它应该将文件指针设置在some.txt中的第40个位置.
解决方法
fseek ( dummy file pointer,SEEK_SET );
In short that dummy pointer should treat the file as there is no that 40 byte in that file and all position should be with respect to that 40th byte as counting as it is 1st byte.
您的要求存在冲突,您无法使用C API执行此操作.
SEEK_SET始终引用文件中的绝对位置,这意味着如果您希望该命令起作用,则必须修改该文件并删除垃圾.
在linux上,你可以编写一个FUSE驱动程序来呈现文件,就像它从第40个字节开始一样,但这是很多工作.我只是提到这个,因为它可以解决你创建的问题,但实际上这样做真的很傻.