回 帖 发 新 帖 刷新版面

主题:小弟求救

size_t strftime( 
char *strDest,
size_t maxsize,
const char *format, 
const struct tm *timeptr
}
问下strftime这个函数中四个参数是什么意思啊书上只有原形没有解释啊求各位哥哥姐姐帮个忙

回复列表 (共7个回复)

沙发

我的英语不好帮个忙把

板凳

该函数 函数原型,以及被包含所在的头文件如下:
#include <time.h>
size_t strftime(char *restrict s, size_t maxsize, const char *restrict format,
                const struct tm *restrict timeptr);
功能:
我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。
参数1 format, 表示将要存放时间格式,比如你给定参数format的值为 “%A %I %p %B %Y”,则会在
输出参数s中得的字符输串格式为:星期几 几点 上午/下午 几月份 年份。
可用的参考如下,和printf()使用的参数格式化一样。
%a 星期几的简写 
%A 星期几的全称 
%b 月分的简写 
%B 月份的全称 
%c 标准的日期的时间串 
%C 年份的后两位数字 
%d 十进制表示的每月的第几天 
%D 月/天/年 
%e 在两字符域中,十进制表示的每月的第几天 
%F 年-月-日 
%g 年份的后两位数字,使用基于周的年 
%G 年分,使用基于周的年 
%h 简写的月份名 
%H 24小时制的小时 
%I 12小时制的小时
%j 十进制表示的每年的第几天 
%m 十进制表示的月份 
%M 十时制表示的分钟数 
%n 新行符 
%p 本地的AM或PM的等价显示 
%r 12小时的时间 
%R 显示小时和分钟:hh:mm 
%S 十进制的秒数 
%t 水平制表符 
%T 显示时分秒:hh:mm:ss 
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年 
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53) 
%x 标准的日期串 
%X 标准的时间串 
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份 
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号

参数2  timeptr, 指的是你所获得的系统时4 间,类型为系统已经定义好的结构体struct tm。
参数3  s, 把结构体timeptr按照format格式化转换成字符串以后就会输出到s中。
参数4  maxsize 向s中输出的最大字符串长度。
返回值  向s中写入的字符个数。

使用列子如下:
#include <iostream>
#include <stdio.h>
#include <time.h>

int main()
{
    time_t local_timer;
    struct tm *time_ptr;
    local_timer = time(NULL);

    /* converts date/time to a structure */
    time_ptr = localtime(&local_timer);

    char str[128];
    strftime(str, sizeof(str),"Today is %A, it is the %d of %B in the year of %Y\n",ptr);
    printf(str);

    return 0;
}

输出结果为: Today is Sunday, it is the 06 of June in the year of 2010

3 楼

不好意思 使用列子中有一行代码,变量名打错了。
strftime(str, sizeof(str),"Today is %A, it is the %d of %B in the year of %Y\n",time_ptr);

4 楼

列子?是例子……虽然只是错别字,还是提醒一下

5 楼

谢谢啊

6 楼

小弟初学有好多都不懂以后含有好多问题就拜托各位哥哥姐姐老啊

7 楼

查API

我来回复

您尚未登录,请登录后再回复。点此登录或注册