溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

[Linux目錄文件]綜合應(yīng)用--使用時間信息生成目錄和文件

發(fā)布時間:2020-07-10 07:44:30 來源:網(wǎng)絡(luò) 閱讀:375 作者:銀河星君 欄目:編程語言
//使用當前時間的“時+分”信息為名稱來創(chuàng)建一個文件夾
//然后在該文件件下以“秒”信息為名稱來創(chuàng)建一個文件
//需要判斷文件夾和文件是否存在
#include <time.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>

int main(int argc,char *argv)
{
  time_t timetemp;        //定義一個時間結(jié)構(gòu)體變量
  struct tm *p;           //結(jié)構(gòu)體指針
  DIR *dp;                //目錄文件指針
  int temp = 0;           //存放mkdir函數(shù)的返回值
  int chdirtemp = 0;      //存放chdir函數(shù)的返回值
  int fd;                 //文件描述符
  char filetimebuf[3];    //目錄時間信息
  char dirtimebuf[5];     //文件時間信息
  char dirnamebuf[10] = "DIR";    //目錄名緩沖區(qū)
  char filenamebuf[10] = "File";  //文件名緩沖區(qū)
  char npath[100];         //當前工作目錄的完整路徑
  time(&timetemp);          //獲得時間參數(shù)
  printf("當前時間為%s",asctime(gmtime(&timetemp)));
  p = localtime(&timetemp);
  printf("小時 = %d ,分 = %d ,秒 = %d\n",p->tm_hour,p->tm_min,p->tm_sec);  //輸出一次當前的時、分、秒信息
  sprintf(dirtimebuf,"%02d%02d",p->tm_hour,p->tm_min);
  sprintf(filetimebuf,"%02d",p->tm_sec);
  //將時、分秒信息按照2位前端補0的方式格式化送入目錄和文件時間buf
  strcat(filenamebuf,filetimebuf);
  strcat(dirnamebuf,dirtimebuf);
  //生成文件和目錄名稱,存放到對應(yīng)的緩沖區(qū)中
  printf("%s\n",filenamebuf);
  printf("%s\n",dirnamebuf);
  dp = opendir(dirnamebuf); //嘗試打開目錄
  if(dp == NULL)            //出錯,說明目錄不存在
  {
    printf("目錄%s不存在\n",dirnamebuf);
    temp = mkdir(dirnamebuf,S_IRWXU|S_IRGRP|S_IXOTH);   //嘗試創(chuàng)建目錄
    if(temp == -1)   //創(chuàng)建目錄失敗
    {
      printf("創(chuàng)建目錄失敗。\n");
      return 1;
    }
    else           //創(chuàng)建目錄成功
    {
      printf("創(chuàng)建目錄%s成功\n",dirnamebuf);
      chdirtemp = chdir(dirnamebuf);         //將當前工作目錄切換到新建的目錄下
      if(chdirtemp == -1)      //表明切換失敗
      {
        printf("切換當前工作目錄失敗\n");
        return 2;
      } 
      else   //切換當前工作目錄成功,創(chuàng)建文件
      {
        if(getcwd(npath,100) == NULL)  //如果已經(jīng)獲得當前的工作目錄則打印輸出,否則退出
        {
          printf("未能獲得當前工作目錄路徑\n");
          return 3;
        }
        else
        {
          printf("當前工作目錄的完整路徑是%s\n",npath);
        }
        fd = open(filenamebuf,O_RDWR|O_CREAT,S_IRWXU);   //創(chuàng)建文件
        if(fd != -1)     //表明創(chuàng)建文件成功
        {
          printf("創(chuàng)建文件%s成功\n",filenamebuf);
          close(fd);     //關(guān)閉文件
        }     
        else
        {
          printf("創(chuàng)建文件失敗\n");
          return 4;
        }
      }
    }
  }
  else    //能打開目錄,則表明目錄存在
  {
    printf("目錄%s已經(jīng)存在\n",dirnamebuf);
    closedir(dp);       //關(guān)閉目錄
    //接下來切換當前工作目錄到已經(jīng)存在的目錄,創(chuàng)建文件
    chdirtemp = chdir(dirnamebuf);         //將當前工作目錄切換到新建的目錄下
    if(chdirtemp == -1)      //表明切換失敗
    {
      printf("切換當前工作目錄失敗\n");
      return 2;
    }
    else   //切換當前工作目錄成功,創(chuàng)建文件
    {
      if(getcwd(npath,100) == NULL)  //如果已經(jīng)獲得當前的工作目錄則打印輸出,否則退出
      {
        printf("未能獲得當前工作目錄路徑\n");
        return 3;
      }
      else
      {
        printf("當前工作目錄的完整路徑是%s\n",npath);
      }
      fd = open(filenamebuf,O_RDWR|O_CREAT,S_IRWXU);   //創(chuàng)建文件
      if(fd != -1)     //表明創(chuàng)建文件成功
      {
        printf("創(chuàng)建文件%s成功\n",filenamebuf);
        close(fd);     //關(guān)閉文件
      }     
      else
      {
        printf("創(chuàng)建文件失敗\n");
        return 4;
      }
    }
  }
  return 0;
}


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI