IO进程:fread\fwrite图像拷贝,read\write文件拷贝,时间函数

1.使用fread、fwrite实现图片拷贝

程序代码:

  1 #include<myhead.h>
  2 int main(int argc, const char *argv[])
  3 {
  4     //判断传入文件个数
  5     if(argc!=3)
  6     {
  7         printf("input file error\n");
  8         printf("usage:./a.out srcfile destfile\n");
  9         return -1;
 10     }
 11     FILE *src=NULL;
 12     //以只读形式打开文件
 13     if((src=fopen(argv[1],"r"))==NULL)
 14     {
 15         perror("fopen error");
 16         return -1;
 17     }
 18 
 19     FILE *dest=NULL;
 20     //以只写形式打开文件
 21     if((dest=fopen(argv[2],"w"))==NULL)
 22     {
 23         perror("fopen error");
 24         return -1;
 25     }
 26     unsigned char *buf;
 27     //求出源文件大小
 28     fseek(src,0,SEEK_END);//光标从起始点到末端
 29     long lenth=ftell(src);//得到文件大小
 30     fseek(src,0,SEEK_SET);//光标回到起始点
 31     //申请存储源图像大小的内存
 32     buf=(char *)malloc(sizeof(char)*lenth);
 33     //从源文件读取
 34     fread(buf,sizeof(char),lenth,src);
 35     //将读取的数据写入目标文件中
 36     fwrite(buf,sizeof(char),lenth,dest);
 37     printf("success\n");
 38     //释放空间
 39     free(buf);buf=NULL;
 40     //关闭文件
 41     fclose(src);
 42     fclose(dest);
 43     return 0;
 44 }  

运行结果:

2.使用read、write完成两个文件的拷贝

程序代码:

  1 #include<myhead.h>
  2 int main(int argc, const char *argv[])
  3 {
  4     //判断终端文件个数
  5     if(argc!=3)
  6     {
  7         printf("input file error\n");
  8         printf("usage:./a.out srcfile destfile\n");
  9         return -1;
 10     }
 11     //定义文件描述符变量
 12     int src,dest;
 13     //以只读形式打开源文件
 14     if((src=open(argv[1],O_RDONLY))==-1)
 15     {
 16         perror("open error");
 17         return -1;
 18     }
 19     //读取源文件内容,写入目标文件
 20     char buf[128]="";//char类型最多128
 21     while(1)
 22     {
 23         //初始化数组
 24         memset(buf,0,sizeof(buf));
 25         //从源文件中读取数据
 26         int res=read(src,buf,sizeof(buf));
 27         //写入目标文件
 28         write(dest,buf,res);
 29         //判断读取的数据个数
 30         if(res==0)
 31             break;
 32     }
 33     //关闭文件
 34     close(src);
 35     close(dest);
 36     printf("success\n");
 37     return 0;
 38 }   

运行结果:

 3.将系统时间在文件中显示出来

程序代码:

  1 #include<myhead.h>
  2 int file_line(FILE *fp);
  3 int main(int argc, const char *argv[])
  4 {
  5     //获取系统时间
  6     time_t oldtime,newtime;//相当于int m,n
  7     //秒数转换为时间结构体类型指针
  8     struct tm *t;
  9     char buf[128]="";//存储时间的字符串
 10 
 11     //定义文件指针,以追加形式打开
 12     FILE *fp=NULL;
 13     if((fp=fopen("./time.txt","a+"))==NULL)
 14     {
 15         perror("fopen error");
 16         return -1;
 17     }
 18     //获取文件行号
 19     int line=file_line(fp);
 20     //获取系统时间
 21     while(1)
 22     {
 23         time(&newtime);
 24         if(oldtime!=newtime)//更新时间
 25         {
 26             oldtime=newtime;
 27             //时间结构体信息
 28             t=localtime(&newtime);
 29             //时间转换为字符串
 30             //调用结构体
 31             sprintf(buf,"%d、%3d:%3d:%3d\n",line++,t->tm_hour,t->tm_min,t->tm_sec);
 32             //写入字符串
 33             fputs(buf,fp);
 34             fflush(fp);
 35         }
 36     }
 37     //关闭文件
 38     fclose(fp);
 39     return 0;
 40 }
 41 //定义获取行号函数
 42 int file_line(FILE *fp)
 43 {
 44     //读取文件内容
 45     char buf[10]="";
 46     int count=0;
 47     //循环读取
 48     while(1)
 49     {
 50         //定义一个指针指向读取的字符串
 51         char *res=fgets(buf,sizeof(buf),fp);
 52         if(res==NULL)//文件读取结束
 53             break;
 54         //判断最后一个字符是否为'\n'
 55         if(buf[strlen(buf)-1]=='\n')
 56             count++;
 57     }
 58     return count;
 59 }   

运行结果:

流程图:

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值