c strcpy文件描述符

daz*_*166 0 c io file strcpy

我有一个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);
Run Code Online (Sandbox Code Playgroud)

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

pgb*_*pgb 6

strcpy并且strcmp用于C字符串,它们是0终止的.如果您的视频文件具有值为0的任何字节,它们将在那里停止.

您应该查看,memcpymemcmp不是将您的缓冲区解释为0终止字符串.