【发布时间】:2012-12-31 05:15:43
【问题描述】:
我正在尝试使用 android ndk 中的 C 函数计算大型 bmp 文件的大小。我正在使用以下代码:-
int getSizeOfCapturedImage(char * imagePath) {
FILE *imageFile = fopen(imagePath, "rb");
long sizeOfImageFile = 0;
if (imageFile == NULL) {
printf("file not found!\n"); //handle error
return 1;
} else {
fseek(imageFile, 0, SEEK_END);
sizeOfImageFile = ftell(imageFile);
printf("size of ImageFile is %1dB\n", sizeOfImageFile);
fclose(imageFile);
}
return sizeOfImageFile;
}
但是,当 bmp 文件的大小大于 120 字节时,此功能无法正常工作。文件不知何故无法打开,文件指针 *imageFile 变为 NULL。
谁能告诉我为什么会这样和/或有其他出路吗?
【问题讨论】:
-
您已经使用磁盘上相同位置的相同文件名验证了这一点,只替换文件本身并重新运行程序?除非您的内存太紧,甚至无法分配 FILE 缓冲区,否则文件大小不会对这段代码产生任何影响,因此唯一的逻辑变量是传入的名称可能已损坏。打印文件名和 errno 以及您的文件未找到消息
printf("File not found : %d, %s\n", errno, imagePath);并确保它有效。 -
正确的 imagePath 作为参数传递给文件打开函数。我验证过了。
-
那么在验证
errno的报告值是...? -
...蟋蟀。也许
errno提供了一些信息?除非 OP 提供更多信息,否则投票结束。
标签: c file-io android-ndk