当前位置: 首页 > news >正文

ctime 写到文件

实现:

定义一个buf,先把用ctime函数得到的日历时间放到buf中,再fwrite到文件1。然后关闭文件,再以只读打开,把文件1内容fread到buf2内。最后把buf2中日历时间显示到终端。

 

源代码:

 1 #include <stdio.h>
 2 #include <time.h>
 3 #include <stdlib.h>
 4 #include <string.h>
 5 #include <time.h>
 6 #include <unistd.h>
 7 #include <strings.h>
 8 
 9 int main(int argc, char *argv[]){
10       time_t t;//必须定义一个时间变量,然后取到个地址。不能time_t * p_t;
11       char *t_ctime;
12       char buf[25] = "\0";
13       char buf2[25] = "\0";
14       int ret_fwrite;
15       int ret_fread;
16       FILE *fp_write;
17       FILE *fp_read;
18       int i;
19 
20       if(2 != argc){
21         printf("%s <file1?>",argv[1]);
22         exit(1);
23       }
24       for(i = 0;i < 3;i++){
25         //打开文件
26         fp_write = fopen(argv[1],"a");//追加写
27         if(fp_write == NULL){
28           perror("fopen file1 no ok!\n");
29           exit(1);
30         }
31         
32         //得到时间
33         time(&t);//秒时间
34         t_ctime = ctime(&t);//日历时间
35         strcpy(buf,ctime(&t));//日历时间复制到buf
36         printf("buf's time data:\n");
37             fwrite(buf,sizeof(char),25,stdout);//法1,buf写到终端
38         //      fputs(buf,stdout);//法2,buf写到终端
39         //      printf("%s",buf);//法3,buf写到终端
40         
41         //写文件1
42         ret_fwrite = fwrite(buf,sizeof(char),25,fp_write);//把buf内容写到文件1
43         if(ret_fwrite == 0){
44           perror("fwrite file1 no ok!");
45           exit(1);
46         }
47         fclose(fp_write);//关闭文件1
48 
49         //读文件1
50         fp_read = fopen(argv[1],"r");//只读打开
51         ret_fread = fread(buf2,sizeof(char),25,fp_read);
52         printf("buf2's time data:\n");
53         fputs(buf2,stdout);//读buf2到终端
54         printf("\n");
55         sleep(1);
56       }
57       return 0;
58 }
View Code

 

shell显示:

 

补充:

1、关于定义buf时,注意要保证buf为空。实现方法有
法一,通过初始化清空:char buf[25] = {'\0'} 或"\0"
法二,通过bzero(buf,size)清空,此时要包含<strings.h>
法三,通过每次strlen(buf)写入文件1的长度来传数据。
法四,令size = 1(效率低)

2、在while(1)循环显示下,若不加sleep(1)延时1s的话,会导致:fopen file1 no ok! :Too many open files
可能因为文件打开输入太快,导致出错。

3、源代码中定义buf长度为25,是因为日历时间一条长度为25。当然可以定义数组大于25,但我想提醒自己注意这个长度。

转载于:https://www.cnblogs.com/KevinWong777/p/6308808.html

相关文章:

  • CentOS 5.4 final下Systemtap的安装
  • |BZOJ 1477|数论|青蛙的约会
  • 一个简单的通讯服务框架(大家发表意见一起研究)JAVA版本
  • mysql中的列属性
  • tcp三次握手与四次挥手
  • ajax php 点击加载更多
  • 【VS开发】ClientToScreen 和ScreenToClient 用法
  • 简单获取CDN背后网站的真实IP
  • jquery 简单实现tab切换
  • int的最大最小值补码原码转换
  • Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405
  • Spring随笔(01)
  • 全屏显示
  • pickle使用及案例
  • 改变this指向
  • 03Go 类型总结
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • C语言笔记(第一章:C语言编程)
  • Debian下无root权限使用Python访问Oracle
  • export和import的用法总结
  • Fundebug计费标准解释:事件数是如何定义的?
  • Java 多线程编程之:notify 和 wait 用法
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • learning koa2.x
  • node入门
  • php ci框架整合银盛支付
  • Python_OOP
  • Rancher如何对接Ceph-RBD块存储
  • 服务器之间,相同帐号,实现免密钥登录
  • 欢迎参加第二届中国游戏开发者大会
  • 技术发展面试
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 一天一个设计模式之JS实现——适配器模式
  • 积累各种好的链接
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​业务双活的数据切换思路设计(下)
  • #预处理和函数的对比以及条件编译
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (力扣)循环队列的实现与详解(C语言)
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (一)RocketMQ初步认识
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .NET 8.0 中有哪些新的变化?
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net 使用ajax控件后如何调用前端脚本
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET开源项目介绍及资源推荐:数据持久层
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • []sim300 GPRS数据收发程序
  • [2023年]-hadoop面试真题(一)
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)