C++ 使用函数fread()读取文件中的数据块
如果我使用C++ 使用函数fread()读取文件中的数据块,c++,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); } 您误解了fread声明中void*ptr的目的 从 缓冲区-指向存储读取对象的数组的指针 首先,参数必须是可以存储对象的有效指针。使用 void *ptr; fread
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);
}
您误解了
fread
声明中void*ptr
的目的
从
缓冲区-指向存储读取对象的数组的指针
首先,参数必须是可以存储对象的有效指针。使用
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);
您误解了
fread
声明中void*ptr
的目的
从
缓冲区-指向存储读取对象的数组的指针
首先,参数必须是可以存储对象的有效指针。使用
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
),您正在读取的数据的格式是什么?(另外,除非为其赋值,否则不能将ptr
的值传递给fread
)