呼叫函式寫檔案的時候,在函式運行到fopen時候,總是匯報圖中所示的錯誤,請問這是什么原因呢?
#define FLT_MAX 4095
char cfile[_MAX_PATH];
strcpy(cfile,"TV.bin");
writeBin(cfile,iterimg,sliceW,sliceW);
bool writeBin(char*Filename,float *Image,int width,int height){
BIN_HEADER hdr;
float max = 0, min = FLT_MAX;
FILE *fp;
fp=fopen(Filename,"wb");
if(fp==NULL){
printf("File open error!");
return 0;
}
int size = width * height * sizeof(float);
for(int j = 0; j < size/sizeof(float); j ++ )//找最大和最小像素
{
if(*(Image + j) > max) max = *(Image + j);
if(*(Image + j) < min) min = *(Image + j);
}
hdr.min = min;
hdr.max = max;
hdr.width = width;
hdr.height = height;
hdr.depth = frame;
fwrite(Image, sizeof(float), width * height, fp);
fwrite(&hdr, sizeof(BIN_HEADER), 1, fp); //寫頭檔案
int ErrorCode=fclose(fp);
if(ErrorCode!=0)
{
printf("File close error!");
return 0;
}
return 1;
}
uj5u.com熱心網友回復:
Image的空間不夠大。我猜。
崩潰的時候在彈出的對話框按相應按鈕進入除錯,按Alt+7鍵查看Call Stack即“呼叫堆疊”里面從上到下列出的對應從里層到外層的函式呼叫歷史。雙擊某一行可將游標定位到此次呼叫的源代碼或匯編指令處,看不懂時雙擊下一行,直到能看懂為止。
uj5u.com熱心網友回復:
Filename是什么,路徑是否有問題錯誤提示是句柄不正確。
uj5u.com熱心網友回復:
Filename 是檔案名,這款里是TV.bin,我想要新建一個名稱為TV.bin的二進制檔案,然后往里面寫資料,但是程式報錯uj5u.com熱心網友回復:
不是 fopen 因為 printf("File open error!"); 沒出來uj5u.com熱心網友回復:
恩,同樣的代碼,在Mac上運行沒有問題,在VS2010上運行就會報上面的錯誤,把WIndows上最近的系統更新都卸載了也沒有用uj5u.com熱心網友回復:
斷點之后,F10逐程序除錯,看看哪一句運行出錯uj5u.com熱心網友回復:
writeBin(cfile,iterimg,sliceW,sliceW);2個W ? Height 呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/122919.html
標籤:基礎類
