gpt4 book ai didi

c - C语言中的二进制文件io

转载 作者:太空宇宙 更新时间:2023-11-04 08:00:08 25 4
gpt4 key购买 nike

如果我输入一个二进制文件到数组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;

最佳答案

因为 fread()fwrite()通用函数,用于将二进制数据读取和写入文件无关 他们的数据类型

fwrite() 的手册页说,

size_t fwrite(const void *ptr, size_t size, size_t nmemb,
FILE *stream);

什么是第一个参数,它的const void *ptr 表示它期望的地址。它可以是任何变量地址 int 或 char 或任何其他数据类型。

关于c - C语言中的二进制文件io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47310831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com