我对 strcpy() 函数有疑问。我要做的是用户输入文件名,我基本上打开文件,获取内容并创建文件副本。
但是,我决定进行一些错误检查,以检查内容 read() 是否与写入副本文件中的内容相同,然后再写入。因此,我使用文件读取的文件大小将内容读取到动态数组中,因此缓冲区是数据的正确大小。然后我想将它的副本创建到另一个动态缓冲区中,并使用 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);
那么我在内存中创建另一个缓冲区副本的原因是我可以比较实际的位数据,而不仅仅是大小,所以我知道正在写入的数据与正在读取的数据相同?