0
int main()
{
void *ptr
fread(ptr,1,100,file);
printf("%s",ptr);
}
int main()
{
void *ptr
fread(ptr,1,100,file);
printf("%s",ptr);
}
你誤解的void * ptr
在fread
聲明的目的。
從http://en.cppreference.com/w/c/io/fread
緩衝器 - 指針到讀對象存儲
首先陣列,參數必須是一個有效的指針,其中的對象可以被存儲。使用
void *ptr;
fread(ptr,1,100,file);
將導致未定義的行爲,因爲ptr
沒有指向任何有效的東西。
其次,參數類型的原因是void*
允許您從流中讀取各種數據。例如。
// Read an integer
int i;
fread(&i, sizeof(int), 1, file);
// Read 10 integers
int a[10];
fread(a, sizeof(int), 10, file);
// Read a double
double d;
fread(&d, sizeof(double), 1, file);
您正在閱讀的數據格式是什麼? (另外,你不能將'ptr'的值傳遞給'fread',直到你給它賦值!) –