我试图计算使用C函数中的Android NDK大bmp文件的大小来计算用C大bmp文件的大小。我正在使用以下代码: -无法在Android的
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缓冲区不能被分配,所以剩下的唯一逻辑变量是被传入的名字可能已经损坏了。使用文件未找到的消息“printf(”文件未找到:%d,%s \ n“,errno,imagePath)打印文件名和errno;并确保它是有效的。 – WhozCraig
正确的imagePath作为参数传递给文件打开函数。我证实了它。 – vikram
因此,在验证“errno”的报告值是...? – WhozCraig