gpt4 book ai didi

c - strftime 没有使用 %C 选项给出正确的输出 - Solaris 10

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:34 24 4
gpt4 key购买 nike

我们在配置文件中使用/usr/xpg4/bin 作为默认路径。我们在这里打印变量“curr_date”的输出:

   lt = time(NULL);
ltime=localtime(localtime(&lt));
strftime(curr_date,sizeof(curr_date),"%m/%d/%y%C",ltime);

我们得到的输出是“06/27/13Thu Jun 27 02:39:34 PDT”而不是“06/27/1320”。

你知道应该在这里工作的格式说明符是什么吗?

谢谢

最佳答案

在 $PATH 中使用 /usr/xpg4/bin 只会选择符合标准的命令,它不会更改程序中的函数调用以使用符合标准的版本。

Solaris standards(5) man page 中所述您需要使用各种#defines 和编译器标志来指定各种标准的合规性。

例如,获取您的代码片段并将其扩展为这个独立的测试程序:

#include <sys/types.h>
#include <time.h>
#include <stdio.h>

int main(int argc, char **argv)
{
time_t lt;
struct tm *ltime;
char curr_date[80];

lt = time(NULL);
ltime = localtime(&lt);
strftime(curr_date, sizeof(curr_date), "%m/%d/%y%C", ltime);
printf("%s\n", curr_date);
return 0;
}

然后用不同的标志编译显示不同的行为:

% cc -o /tmp/strftime /tmp/strftime.c
% /tmp/strftime
06/30/13Sun Jun 30 20:28:00 PDT 2013

% cc -xc99 -D_XOPEN_SOURCE=600 -o /tmp/strftime /tmp/strftime.c
% /tmp/strftime
06/30/1320

默认模式向后兼容传统的 Solaris 代码,第二种形式要求符合 C99 和 XPG6 (Unix03) 标准。

关于c - strftime 没有使用 %C 选项给出正确的输出 - Solaris 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17371733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com