【发布时间】:2015-02-08 19:56:47
【问题描述】:
我有以下代码:
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。有谁知道为什么这没有发生?
【问题讨论】:
-
是的,就是这样。谢谢!
-
这是设计使然。如果您在程序中调用
fseek之后调用fwrite(string, 1, strlen(string), fp)调用,则文件将在字符串前填充 1000 个空字符。