我有以下代码:
int main(int argc,char *argv[]){
FILE *fp;
if(argc != 2){
perror("Please specify a file");
return 1;
}
if((fp=fopen(argv[1], "rb")) == 0){
perror("File not found!");
return 2;
}
int a = fseek(fp, 1000, SEEK_CUR);
if(a<0){
printf("fail\n");
}
fclose(fp);
return 0;
}
当我用空二进制文件调用它时,没有错误发生,尽管我希望fseek()以-1返回。有谁知道为什么这不会发生?
答案 0 :(得分:1)
POSIX允许在现有文件末尾之外进行搜索。如果输出是 在此搜索之后执行,来自间隙的任何读取将返回零 字节。在文件系统支持的情况下,这将创建一个稀疏文件。
答案 1 :(得分:0)
这是正确的。当你寻找过去的文件结束时,fseek
不会失败。