2013-10-31 35 views
0

我正在嘗試編寫一個源文件,該文件將採用文件名/目錄,然後將當前日期&時間添加到文件名的末尾。到目前爲止,我發現我們可以使用time()& localtime()函數。不過,我不確定從哪裏開始。將時間和日期添加到文件名

有人能給我一些指示/步驟,我可以按照路徑到達那裏?

謝謝! :d

回答

2
  • 使用time()localtime()來獲得當前時間
  • 使用strftime()對其進行格式化,以你想要的格式。
  • 使用snprintf()將格式化時間與原始文件名稱組合在一起。
  • 使用rename()來進行實際的重命名。

注意,上述所有可以shell腳本的一行來完成,所以問問你自己是否真的需要做到這一點在C,而不是將其貶謫到sh

+0

謝謝 - 更新。他實際上提到他進步到'localtime()'這就是爲什麼我沒有提到它的原因。 –

0

要獲取日期/時間,您必須包含time.h。 然後你可以使用localtime功能是這樣的:

time_t t = time(NULL); 
struct tm tm = *localtime(&t); 

的結構tm包含所需信息。您可以通過tm.tm_mday等訪問月份的當天。

您可以使用sprintf編寫所有的日期信息,像這樣的字符串:使用strcat

char datum[128]; 
sprintf(datum, "%d-%d-%dT%d:%d:%d", tm.tm_year+1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); 
printf("%s\n", datum); 

會看到這樣的

2013-10-31T20:26:42 

你可以這個字符串添加到您的文件名

0

此代碼將工作。

char timestr[50]; 
time_t now = time(NULL); 
struct tm *t = localtime(&now); 
strftime(timestr, sizeof(timestr)-1, "%m-%d-%Y", t); 
timestr[49] = 0; 
if((filename = malloc(strlen(argv[2])+strlen(timestr)+1) != NULL) { 
filename[0] = '\0'; 
strcat(filename,argv[2]; 
strcat(filename,"_"); 
strcat(filename,timestr); 
strcat(filename,".log"); 
} 

只需按照您的代碼argc更改argv [2]。

相關問題