我正在嘗試編寫一個源文件,該文件將採用文件名/目錄,然後將當前日期&時間添加到文件名的末尾。到目前爲止,我發現我們可以使用time()& localtime()函數。不過,我不確定從哪裏開始。將時間和日期添加到文件名
有人能給我一些指示/步驟,我可以按照路徑到達那裏?
謝謝! :d
我正在嘗試編寫一個源文件,該文件將採用文件名/目錄,然後將當前日期&時間添加到文件名的末尾。到目前爲止,我發現我們可以使用time()& localtime()函數。不過,我不確定從哪裏開始。將時間和日期添加到文件名
有人能給我一些指示/步驟,我可以按照路徑到達那裏?
謝謝! :d
time()
和localtime()
來獲得當前時間strftime()
對其進行格式化,以你想要的格式。snprintf()
將格式化時間與原始文件名稱組合在一起。rename()
來進行實際的重命名。注意,上述所有可以shell
腳本的一行來完成,所以問問你自己是否真的需要做到這一點在C,而不是將其貶謫到sh
。
要獲取日期/時間,您必須包含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
你可以這個字符串添加到您的文件名
此代碼將工作。
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]。
謝謝 - 更新。他實際上提到他進步到'localtime()'這就是爲什麼我沒有提到它的原因。 –