我对strcpy()函数有个疑问。我想要做的是用户输入文件名,我基本打开文件,获取内容并创建文件副本。c 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);
那么为什么我在内存中创建了另一个缓冲区副本,以便我可以比较实际的位数据,而不仅仅是大小,所以我知道正在写入的数据与正在读取的数据相同?
你有没有试过在二进制模式下打开视频文件? – programmer 2011-01-11 13:20:00
简短的完整性检查:为什么要将文件内容复制到内存中?这绝对没有必要,因为文件内容可以用读缓冲区的内容直接写入。 – 2011-01-11 13:25:24