讀書時,我有以下功能:分段故障從文件
void read_file(char* path, char** data)
{
FILE* file = NULL;
size_t size, result = 0;
*data = NULL;
file = fopen(path, "rb");
if (file == NULL)// error opening file
{
return;
}
fseek(file, 0, SEEK_END);
size = ftell(file) + 1;
rewind(file);
*data = (char*)malloc(size);
if(*data == NULL)
return;
result = fread(*data, 1, size, file);
if (result != size - 1)// error reding file
{
*data = NULL;
}
printf("LINE=%u\n", __LINE__);
(*data)[size-1] = '\0';
printf("LINE=%u\n", __LINE__);
fclose(file);
return;
}
我正在上線分段故障右兩個printf("LINE=%u\n", __LINE__);
語句之間。我不明白這是爲什麼。當我在看這條線時,看起來(*data)
將會有一個類型(char *)
,這當然應該能夠與索引運算符[]
一起使用。
我錯過了什麼?
C或C++?選一個(C)。 –
您是否在調試器中輸出了'size'的值?特別是,檢查它不是'0'。 –
這是不是一個有效的功能? –