[+Error+]+cannot+convert+'+student+'+to+'+void+"+for+argument+'1'+to+'+size+_+t+fread+(+void+",+size
时间: 2023-10-10 19:13:59 浏览: 57
这个错误是由于在使用 fread 函数时,将类型为 'student' 的参数传递给了期望的 'void *' 类型。fread 函数的原型是 `size_t fread(void *ptr, size_t size, size_t count, FILE *stream)`,其中第一个参数应该是一个指向要读取数据存储位置的指针,而不是一个具体的数据类型。
如果你想读取 student 类型的数据,你需要先创建一个合适大小的内存块,然后将其转换为 void * 类型,并将其作为 fread 函数的第一个参数传入。例如,假设你要读取一个 student 类型的对象,可以这样做:
```c
student stu;
FILE *file = fopen("students.bin", "rb");
if (file) {
fread(&stu, sizeof(student), 1, file);
相关问题
argument+of+type+"unsigned+char"+is+incompatible+with+parameter+of+type+"const+void+*+restrict”
这个错误是因为函数参数类型不匹配导致的。具体来说,你传递给函数的参数类型是"unsigned char",而函数期望的参数类型是"const void * restrict"。这两种类型是不兼容的,因此编译器会报错。
要解决这个问题,你可以将"unsigned char"类型的参数转换为"const void * restrict"类型。你可以使用类型转换来实现这一点。具体的转换方法取决于你的代码和上下文。
以下是一个示例,演示了如何将"unsigned char"类型的参数转换为"const void * restrict"类型:
```c++
unsigned char arg = 'A';
const void * restrict param = reinterpret_cast<const void *>(arg);
```
请注意,这只是一个示例,具体的转换方法可能因你的代码和上下文而异。
error: cannot convert ‘const String’ to ‘const char*’ for argument ‘1’ to ‘size_t strlen(const char*)’ data =new char[strlen(str) + 1];
这个错误是因为你在将一个 `String` 对象转换为 `const char*` 时出错了。`strlen` 函数的参数应该是一个以 null 结尾的字符串,而不是一个 `String` 对象。要解决这个问题,你可以使用 `c_str()` 函数来获取 `String` 对象的 C 风格字符串表示,然后再传递给 `strlen` 函数。修改代码如下所示:
```cpp
data = new char[str.length() + 1];
strcpy(data, str.c_str());
```
这样就可以正确地将 `String` 对象的内容复制到 `data` 字符数组中了。记得在不需要使用 `data` 时释放内存,避免内存泄漏。
阅读全文