【发布时间】:2018-04-28 21:07:26
【问题描述】:
如果我将二进制文件输入到数组 buf,为什么我必须通过 (void*) 输入它? 为什么我必须用 (void*) 来写它??请遵守此代码,并向我解释此代码。 (我只是从我的书中复制了这段代码)
int main(void) {
FILE * src = fopen("a.png", "rb");
FILE * des = fopen("b.png", "wb");
char buf[20];
int readCnt;
if (src == NULL || des == NULL) {
puts("File open failed");
return -1;
}
while (1) {
readCnt = fread((void*)buf, 1, sizeof(buf), src);
if (readCnt < sizeof(buf)) {
if (feof(src) != 0) {
fwrite((void*)buf, 1, readCnt, des);
puts("File copy complete");
break;
}
else
puts("File copy Failed");
break;
}
fwrite((void*)buf, 1, sizeof(buf), des);
}
fclose(src);
fclose(des);
return 0;
}
【问题讨论】:
-
这本书很旧吗?无需转换为
void *,c 中的每个指针都可以从void *转换并返回而无需转换 -
uint64_t buf[20] 需要读取更多的 void*,但你可以用任何东西做文件 io