求助
void ReadInputFile() {
FILE* fp = fopen(inputFileName, "r");
//打開輸入檔案
if (fp == NULL) {
printf("%s錯誤\n", inputFileName);
system("pause");
exit(2);
}
char* data = (char*)malloc(sizeof(char) * maxLen);
int dataSize = 0;
char ch;
while ((ch = fgetc(fp)) != EOF) {
data[dataSize] = ch;
dataSize++;
}
fclose(fp);
data[dataSize] = '\0';
fileData.data = data;
fileData.size = dataSize;
printf("讀取成功!\n\n");
MyString* Filep = (MyString*)malloc(sizeof(MyString));
Filep->size = dataSize;//內容大小
Filep->data = data;
free(Filep);
free(data);
Filep = data = NULL;
}
typedef struct MyString {
unsigned char* data;
int size;
}MyString;

uj5u.com熱心網友回復:
unsigned char* data; 這個也要分配記憶體才能存放資料的uj5u.com熱心網友回復:
除錯代碼的必要知識:到啥時候說啥話。不要指望剛執行一句的時候就看見結果。
uj5u.com熱心網友回復:
代碼不完整,所以只能從你現有代碼來琢磨。fileData是個全域變數吧?在ReadInputFile函式里,讀完檔案之后,fileData.data = data,本意是想通過fileData將讀入的資料帶回?但是ReadInputFile的后面有free(data),data(以及fileData.data)指向的存盤區就被釋放掉了,那么fileData.data就指向了無效的存盤區。所以其他代碼再訪問fileData.data時就會出錯。uj5u.com熱心網友回復:
Filep = data = NULL; 這句得分開寫: Filep = NULL; data = NULL;轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/284820.html
標籤:C語言
上一篇:面向物件