首页 > 代码库 > ctime 写到文件

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,但我想提醒自己注意这个长度。

ctime 写到文件