gpt4 book ai didi

c strcpy 文件描述符

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

我对 strcpy() 函数有疑问。我想要做的是用户输入一个文件名,我基本上打开文件,获取内容并创建文件副本。

但是,我决定做一些错误检查,在写入之前检查读取的内容()是否与复制文件中写入的内容相同。因此,我使用读取文件的文件大小将内容读取()到动态数组中,因此缓冲区是数据的正确大小。然后我想将它的副本创建到另一个动态缓冲区中,并使用 strcmp() 查看它们是否相同,如果是,那么我将复制缓冲区写入输出文件?

这对某些文件工作正常但视频文件 (mpeg) 等有问题,当打开视频文件时出现错误“无法确定流的类型”,这就是想法

char* buffer1 = malloc(filessize);
char* buffer2 = malloc(filessize);
read(file, buffer1, filesize);
strcpy(buffer2, buffer1); //copy buffer1 into buffer2
if(strcmp(buffer1, buffer2) == 0)
{
write(outputfile, buffer2, filesize); //write copied buffer to file
}
free(buffer1); free(buffer2);

那么我在内存中创建另一个缓冲区副本的原因是我可以比较实际的位数据,而不仅仅是大小,所以我知道正在写入的数据与正在读取的数据相同?

最佳答案

strcpystrcmp 用于 C 字符串,它们以 0 结尾。如果您的视频文件有任何值为 0 的字节,它们将在那里停止。

您应该查看 memcpymemcmp,它们不会将您的缓冲区解释为 0 终止字符串。

关于c strcpy 文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4657991/

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