【发布时间】:2021-08-14 16:05:23
【问题描述】:
我尝试了几种方法来做到这一点,但我做不到。 代码面试:
file = fopen(filename,"r");
int size=0;
if (file == NULL){
printf("couldnt open: %s\n",filename);
}
else if(size==0){
fseek(file,0,SEEK_END);
size = ftell(file);
fclose(file);
if (size ==0){
printf("empty");
}
}
我也尝试了 feof 函数,foef(file) 总是返回相同的值,它不关心文件是否为空。有什么帮助吗?
【问题讨论】:
-
这似乎适用于 Linix。
-
检查
fseek()的返回值是0还是non 0;有无法查找的文件。另请注意,ftell()返回一个 long,如果将其转换为 int,您可能会丢失精度。 -
else if (size==0)为什么?你将它初始化为 0,所以这总是正确的。最好发布完整的实际代码,其他人可以复制、粘贴和按原样编译/运行。 -
您不应该使用该方法来获取文件大小。在 Linux 上,使用
fstat(),在 Windows 上,使用GetFileSize()。 -
@Archie uderscore_d 的意思是,当您在打开文件后检查
else if(size==0){时,size是总是 0,所以进行检查没有意义。跨度>