C语言strftime()函数 (格式化时间)(注意第二个参数size_t maxsize一定要大于第三个参数const char *format指向字符串的长度)
需包含:C 標(biāo)準(zhǔn)庫 - <time.h>
文章目錄
- 描述
- 聲明
- 參數(shù)
- 返回值
- 實例
- 使用?坑(注意第二個參數(shù)size_t maxsize一定要大于第三個參數(shù)const char *format指向字符串的長度)
描述
C 庫函數(shù) size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) 根據(jù) format 中定義的格式化規(guī)則,格式化結(jié)構(gòu) timeptr 表示的時間,并把它存儲在 str 中。
聲明
下面是 strftime() 函數(shù)的聲明。
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
參數(shù)
- str – 這是指向目標(biāo)數(shù)組的指針,用來復(fù)制產(chǎn)生的 C 字符串。
- maxsize – 這是被復(fù)制到 str 的最大字符數(shù)。
- format – 這是 C 字符串,包含了普通字符和特殊格式說明符的任何組合。這些格式說明符由函數(shù)替換為表示 tm 中所指定時間的相對應(yīng)值。格式說明符是:
- timeptr – 這是指向 tm 結(jié)構(gòu)的指針,該結(jié)構(gòu)包含了一個被分解為以下各部分的日歷時間:
返回值
如果產(chǎn)生的 C 字符串小于 size 個字符(包括空結(jié)束字符),則會返回復(fù)制到 str 中的字符總數(shù)(不包括空結(jié)束字符),否則返回零。
實例
下面的實例演示了 strftime() 函數(shù)的用法。
#include <stdio.h> #include <time.h>int main () {time_t rawtime;struct tm *info;char buffer[80];time( &rawtime );info = localtime( &rawtime );strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", info);printf("格式化的日期 & 時間 : |%s|\n", buffer );return(0); }運行結(jié)果:格式化的日期 & 時間 : |2018-09-19 08:59:07|
使用?坑(注意第二個參數(shù)size_t maxsize一定要大于第三個參數(shù)const char *format指向字符串的長度)
測試代碼:(可在VS上運行)
#pragma warning(disable : 4996) #include <time.h> #include <stdio.h> #include <string.h> #include <stdio.h>//arnold add 獲取格式化時間 void get_format_time(char* format_time, size_t size) {time_t nowtime;struct tm* timeinfo;time(&nowtime);timeinfo = localtime(&nowtime);//printf("%ld\n", sizeof(format_time)); //8(64位系統(tǒng)指針大小為8個字節(jié))//printf("%ld\n", sizeof(*timeinfo)); //56//strftime(format_time, sizeof(format_time), "%Y%m%d%H%M%S", timeinfo); //失敗案例1//strftime(format_time, 14, "%Y%m%d%H%M%S", timeinfo); //失敗案例2strftime(format_time, 19, "ss%Y%m%d%H%M%Sss", timeinfo); //ss%Y%m%d%H%M%Sss長度18,所以第二個參數(shù)一定要大于18(當(dāng)小于等于18時,format_time為空字符串,當(dāng)大于18,輸出才正常) }int main() {//arnold add:將時間作為視頻名char format_time[50] = { 0 };get_format_time(format_time, sizeof(format_time));/*int i =0;while (format_time[i] != '\0'){printf("%c\n", format_time[i]);i++;}*/printf("format_time: %s\n", format_time);strcat(format_time, ".mp4"); //字符串拼接char* output_file = format_time;printf("%s\n", output_file);return 0; }如:
(當(dāng)?shù)诙€參數(shù)為14)
(當(dāng)?shù)诙€參數(shù)為15)
參考文章:C 庫函數(shù) - strftime()
總結(jié)
以上是生活随笔為你收集整理的C语言strftime()函数 (格式化时间)(注意第二个参数size_t maxsize一定要大于第三个参数const char *format指向字符串的长度)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual studio(VS)如何修
- 下一篇: word文档怎么限制编辑(禁止编辑、只读