gpt4 book ai didi

关于 C 中 fwrite() 和 fread() 参数的混淆

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:01 24 4
gpt4 key购买 nike

<分区>

我是 C 的新手,最近我一直在开发一个程序,在该程序中,我使用 fread 从文件中读取 512 字节的流到数组中,然后在检查该字节流中的某些条件后,我正在编写使用 fwrite 将字节流写入新文件。
相同的代码片段是

    unsigned char buffer[512];
FILE *fp = fopen("file.name","r");

if(fp == NULL)
{
perror("Error opening the file\n ");
fclose(fp);
return -1;
}

while(fread(&buffer, sizeof(buffer), 1 , fp) == 1) //my program works fine for both &buffer and only buffer
{
//Do something
}

恐惧的定义是:

    size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

这里的 ptr 是指向存储读取字节的内存块的指针。

我已将缓冲区定义为字符数组,因此只传递 buffer因为第一个参数应该足够了,因为它是一个指针,但程序即使在 &buffer 时也能正常工作。正在提供。 fwrite 也发生了同样的情况。现在如果buffer那么指针就是&buffer是指针的地址,不应该与指针的结果相同,但实际上确实如此,那么为什么函数在两个不同的参数下都能正常工作?

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