使用函数fread()读取文件中的数据块

时间:2017-04-16 00:26:32

标签: c++

如果我使用

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);
}

1 个答案:

答案 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);