日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言strftime()函数 (格式化时间)(注意第二个参数size_t maxsize一定要大于第三个参数const char *format指向字符串的长度)

發(fā)布時間:2025/3/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言strftime()函数 (格式化时间)(注意第二个参数size_t maxsize一定要大于第三个参数const char *format指向字符串的长度) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

需包含: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)值。格式說明符是:
說明符 替換為 實例 %a 縮寫的星期幾名稱 Sun %A 完整的星期幾名稱 Sunday %b 縮寫的月份名稱 Mar %B 完整的月份名稱 March %c 日期和時間表示法 Sun Aug 19 02:56:02 2012 %d 一月中的第幾天(01-3119 %H 24 小時格式的小時(00-2314 %I 12 小時格式的小時(01-1205 %j 一年中的第幾天(001-366231 %m 十進制數(shù)表示的月份(01-1208 %M 分(00-5955 %p AM 或 PM 名稱 PM %S 秒(00-6102 %U 一年中的第幾周,以第一個星期日作為第一周的第一天(00-5333 %w 十進制數(shù)表示的星期幾,星期日表示為 00-64 %W 一年中的第幾周,以第一個星期一作為第一周的第一天(00-5334 %x 日期表示法 08/19/12 %X 時間表示法 02:50:06 %y 年份,最后兩個數(shù)字(00-9901 %Y 年份 2012 %Z 時區(qū)的名稱或縮寫 CDT %% 一個 % 符號 %
  • timeptr – 這是指向 tm 結(jié)構(gòu)的指針,該結(jié)構(gòu)包含了一個被分解為以下各部分的日歷時間:
struct tm {int tm_sec; /* 秒,范圍從 0 到 59 */int tm_min; /* 分,范圍從 0 到 59 */int tm_hour; /* 小時,范圍從 0 到 23 */int tm_mday; /* 一月中的第幾天,范圍從 1 到 31 */int tm_mon; /* 月份,范圍從 0 到 11 */int tm_year; /* 自 1900 起的年數(shù) */int tm_wday; /* 一周中的第幾天,范圍從 0 到 6 */int tm_yday; /* 一年中的第幾天,范圍從 0 到 365 */int tm_isdst; /* 夏令時 */ };

返回值

如果產(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。