ctime 写到文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
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 写到文件的主要内容,如果未能解决你的问题,请参考以下文章