c语言文件操作_C语言二进制文件操作(复制文件)

好好生活,好好去爱,怀念不一定要相见,喜欢不一定就要在一起,你要相信,每一次相遇都有他的意义。。。

----  网易云热评

一、写数据

#include #include #include #include typedef struct Aiyou{       int year;       char name[50];       char zdg[50];}Aiyou;int main() {FILE* fp = NULL;          errno_t err;          err = fopen_s(&fp, "C:\\Users\\aiyou\\Desktop\\123.txt", "w");          if (err != 0)          {                       printf("文件打开失败!");                       return;          }          Aiyou ay[3] = { 2016,"周杰伦的床边故事","告白气球" ,                       2016,"周杰伦的床边故事","告白气球" ,                       2016,"周杰伦的床边故事","告白气球" };          int ret = fwrite(ay,1,sizeof(ay),fp);          printf("%d", ret);          fclose(fp);}

1、&ay需要文件写内容的首地址

2、sizeof(ay)写书数据大小

3、1,写入内容的个数

4、fp,要操作的文件

5、因为二进制写入,所以看到的是乱码

运行结果:

f4246579496a773e4dc3360df125c170.png

二、读数据

FILE* fp1 = NULL;       errno_t err1;       err1 = fopen_s(&fp1, "C:\\Users\\aiyou\\Desktop\\123.txt", "r");       if (err1 != 0)       {              printf("文件打开失败!");              return;       }       Aiyou ay1[10];       int i = 0;       int ret1 = 0;       while (1)       {              ret1 = fread(&ay1[i], 1,sizeof(Aiyou),fp1);              printf("ret1=%d\n", ret1);              if (ret1==0)              {                     break;              }              i++;       }       printf("共有%d个数据\n", i);       int n = i;              for (i = 0; i < n; i++)       {              printf("%d-%s-%s\n", ay1[i].year, ay1[i].name, ay1[i].zdg);       }       fclose(fp1);

1、&ay1[0],要读数据的首地址

2、sizeof(Aiyou),要读数据的块大小

3、3,读3个快

4、fp1,要操作的文件

5、while循环,判断有多少个元素

5、运行结果

6a6bf0581a1ac917c33e7be9f48d72be.png

三、实例(复制文件)

#include #include #include #include typedef struct Aiyou{       int year;       char name[50];       char zdg[50];}Aiyou;int main(int argc,char *argv[]) {       //判断参数个数       if (argc !=3)       {              printf("参数有误!");              return;       }       //打开源文件       FILE* rp = NULL;       errno_t err;       err = fopen_s(&rp, argv[1], "rb");//b是二进制模式       if (err != 0)       {              printf("文件打开失败!");              return;       }       //打开要复制到的文件       FILE* wp = NULL;       errno_t err1;       err1 = fopen_s(&wp, argv[2], "wb");       if (err1 != 0)       {              printf("文件打开失败!");              return;       }                 //每次度4KB内容       char buf[4*1024];       int len;              while (1)              {                     len = fread(buf,1,sizeof(buf),rp);                     printf("len=%d\n", len);                     if (len==0)                     {                           break;                     }                     fwrite(buf,1,len,wp);              }       fclose(rp);       fclose(wp);                     system("pause");       return 0;}

运行结果:

f5df98f1a75f2f662614e3ff299044f4.png

277159e1fdf82cb08a72d1e19b0450ed.png

欢迎关注公众号:顺便编点程

b80ea3587e3ddfd1a6507d7750a3cdf5.png

bb007f57fdee108102ca7ec4d97fead4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值