如果我使用
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ),
如何解除ptr指向的数据?就像我有
int main()
{
void *ptr
fread(ptr,1,100,file);
printf("%s",ptr);
}
答案 0 :(得分:2)
你在void * ptr
的声明中误解了fread
的目的。
来自http://en.cppreference.com/w/c/io/fread
buffer - 指向存储读取对象的数组的指针
首先,参数必须是可以存储对象的有效指针。使用
void *ptr;
fread(ptr,1,100,file);
会导致未定义的行为,因为ptr
没有指向任何有效的行为。
其次,参数类型的原因是void*
,允许您从流中读取所有类型的数据。 E.g。
// 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);