linux C創建文件夾然后創建txt文件添加內容


部分代碼說明:
一、Unix/Linux系統下的一種時間結構:
1、time_t 類型:長整型,一般用來表示從1970-01-01 00:00:00時以來的秒數,精確度:秒;
由函數time()獲取;該類型定義在頭文件 /usr/include/sys/time.h 中。
2、struct  tm 結構:由函數gmtime()解析time_t得到
struct tm*gmtime(const time_t*timep);
函數說明:gmtime()將參數timep 所指的time_t 結構中的信息轉換成真實世界所使用的時間日期表示方法,然后
將結果由結構tm返回。
結構tm的定義為
struct tm
{
int   tm_sec;
int   tm_min;
int   tm_hour;
int   tm_mday;
int   tm_mon;
int   tm_year; 
int   tm_wday;
int   tm_yday; 
int tm_isdst;
};
int   tm_sec 代表目前秒數,正常范圍為0-59,但允許至61秒
int   tm_min 代表目前分數,范圍0-59
int   tm_hour 從午夜算起的時數,范圍為0-23 
int   tm_mday 目前月份的日數,范圍01-31 
int   tm_mon 代表目前月份,從一月算起,范圍從0-11
int   tm_year 從1900 年算起至今的年數
int   tm_wday 一星期的日數,從星期一算起,范圍為0-6
int   tm_yday 從今年1月1日算起至今的天數,范圍為0-365
int   tm_isdst 日光節約時間的旗標
此函數返回的時間日期未經時區轉換,而是UTC時間。
3、localtime是 把從1970-1-1零點零分到當前時間系統所偏移的秒數時間轉換為本地時間,而gmtime函數轉換后的時間沒有經過時區變換,是UTC時間 。
 
一個實例:
void StoreEvent(char *str)
{
 long tt;   
 struct tm *vtm;
 int i;
 char Etime[100];
 char filename[20];
 char dirname[20];
 
 char path[100];
 getcwd(path, sizeof(path));  //獲取當前路徑
 
 time( &tt );    //獲取當前時間
 vtm = localtime( &tt );   //轉換為日歷時間
 sprintf(Etime,"%d-%02d-%02d %02d:%02d:%02d  ",vtm->tm_year+1900,vtm->tm_mon+1,vtm->tm_mday,vtm->tm_hour,vtm->tm_min,vtm->tm_sec);
 sprintf(filename,"/%d%02d%02d.txt",vtm->tm_year+1900,vtm->tm_mon+1,vtm->tm_mday);
 sprintf(dirname,"/%d%02d",vtm->tm_year+1900,vtm->tm_mon+1); 
 
 strcat(path,dirname);
 if(access(path,0)==-1)  //access函數是查看文件是不是存在
 {
        if (mkdir(path,0777)) //如果不存在就用mkdir函數來創建
        {
            printf("creat file bag failed!!!\n");
        }
 }
 strcat(path,filename);
 FILE *fp;
 fp = fopen(path,"ar+"); 
 if(fp == NULL)
 { 
    printf("文件異常。\n");
    return;
 }
 
 lseek(fp,0,SEEK_END); //將讀寫位置移到文件尾
 strcat(Etime,str);
 fputs(Etime,fp);
 fflush(fp);
 fsync(fileno(fp));  //同步緩存
 fclose(fp);
}
程序運行后會在當前目錄以“年月”為名創建一個文件夾,並在該文件夾下以“年月日”為名創建一個txt文檔,文檔內容實例如下:
2019-02-18 11:10:21  開機。
2019-02-18 11:10:46  開啟風機。
2019-02-18 11:11:26  開啟風機。
2019-02-18 12:02:07  開機。
2019-02-18 14:43:17  開機。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM