У меня вопрос с функцией 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);
Что ж, причина, по которой я создал другую копию буфера в памяти, заключается в том, что я могу сравнивать фактические битовые данные, а не только размер, поэтому я знаю, что записываемые данные совпадают с читаемыми данными?