在C语言中,直接处理图片文件(如JPEG、PNG等)的复制,通常涉及到文件I/O操作。这些图片文件是二进制文件,因此需要使用二进制模式读取和写入文件。
图片文件复制代码:
#include <stdio.h>
#include<string.h>int main(){FILE *fp1,*fp2;char buf[100];int size;fp1 = fopen("C:\\Users\\87417\\Desktop\\error_404.jpg","rb");fp2 = fopen("C:\\Users\\87417\\Desktop\\error_500.jpg","wb");if(fp1 == NULL){printf("can't open this file1.\n");return 0;}if(fp2 == NULL){printf("can't open this file2.\n");return 0;}while((size=fread(buf,1,100,fp1))>0){fwrite(buf,1,size,fp2);}fclose(fp1);fclose(fp2);return 0;
}
使用 fopen 函数以二进制模式打开文件。
rb
表示读取二进制文件,wb
表示写入二进制文件。
fread 函数
fread 函数用二进制方式向文件读取数据。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr:指向一个内存缓冲区的指针,该缓冲区用于存储从文件中读取的数据。
size:要读取的每个数据项的大小(以字节为单位)。
nmemb:要读取的数据项的数量。
stream:指向 FILE 对象的指针,表示要从中读取数据的文件流。
fread 函数返回成功读取的数据项的数量,这可能会小于 nmemb 如果在到达文件末尾之前无法读取这么多数据项。如果发生读取错误或到达文件末尾,ferror 或 feof 函数将返回非零值。
fwrite 函数
fwrite 函数用二进制方式向文件写入数据。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr:指向包含要写入文件的数据的内存缓冲区的指针。
size:要写入的每个数据项的大小(以字节为单位)。
nmemb:要写入的数据项的数量。
stream:指向 FILE 对象的指针,表示要写入数据的文件流。
fwrite 函数返回成功写入的数据项的数量。如果返回值小于 nmemb,则可能发生了写入错误。可以使用 ferror 函数来检查是否发生了错误。