二进制文件 读取文件,再写入到另一个文件里面:
1、获取文件大小
1 2 3 4 5 FILE* fp = fopen("T:/img.jpg" , "rb" ); fseek(fp, 0 , SEEK_END); int size = ftell(fp);fclose(fp); cout << "文件大小(指针偏移计算):" << size;
2、读取文件
1 2 3 4 FILE* fp = fopen("T:/img.jpg" , "rb" ); int * buffer = (int *)malloc (size+4 ); fread(buffer, size, 1 , fp); fclose(fp);
3、写入到另一个文件
1 2 3 FILE* fp = fopen("T:/img1.png" , "wb" ); fwrite(buffer, size, 1 , fp); fclose(fp);
fread
和write
的size
可以更大,不影响结果(表示上限)
实测一张jpg图片:
size超过体积,保存的会是size的大小
1/10时:图片只有一半显示,体积也只有1/10
1/4时:上方5/6的部分清晰,剩下的模糊
1/2时:虽然体积只有一半,但是好像一样清晰……
文本文件 读取文本文件
1 2 3 4 FILE *fp = fopen("/tmp/test.txt" , "w+" ); fprintf (fp, "This is testing for fprintf...\n" );fputs ("This is testing for fputs...\n" , fp);fclose(fp);
写入文本文件
1 2 3 4 5 char buff[255 ];FILE *fp = fopen("/tmp/test.txt" , "r" ); fscanf (fp, "%s" , buff); fgets(buff, 255 , (FILE*)fp); fclose(fp);