c - 如何打印结构的各个成员

标签 c time struct printf

我需要按以下格式打印出当前日期:今天是星期三 - 2012 年 9 月 7 日。我知道我将不得不使用该结构

 struct tm* time_info;

我可以使用 strftime() 轻松完成此操作,但是,我的任务是不使用 strftime() 并直接使用 printf 语句提取结构的成员。我似乎无法让它正常工作。有什么线索吗?这是我当前的代码:

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

 /* localtime example */
 #include <stdio.h>
 #include <time.h>

 int main (void)
 {
 time_t t; 
 char buffer[40]; 
 struct tm* tm_info; 

 time(&t); 
 tm_info = localtime(&t);
 strftime(buffer, 40, " Today is %A - %B %e, %Y", tm_info); 
 puts(buffer); 


  return 0;
}

代替

 strftime(buffer, 40, " Today is %A - %B %e, %Y", tm_info); 

我需要

 printf("Today is %s, struct members info in the correct format);

最佳答案

struct tm 至少有这些 members

int    tm_sec   Seconds [0,60]. 
int    tm_min   Minutes [0,59]. 
int    tm_hour  Hour [0,23]. 
int    tm_mday  Day of month [1,31]. 
int    tm_mon   Month of year [0,11]. 
int    tm_year  Years since 1900. 
int    tm_wday  Day of week [0,6] (Sunday =0). 
int    tm_yday  Day of year [0,365]. 
int    tm_isdst Daylight Savings flag. 

So now you can do e.g.

printf("Today is %d - %d %d, %d", tm_info->tm_wday, 
                                  tm_info->tm_mon,
                                  tm->tm_mday,
                                  1900 + tm_info->tm_year);

这当然会以数字的形式打印出月份和星期几,我会留给你创建一个简单的查找表来获取匹配的英文单词。使用数组,以便您可以映射,例如索引 0 到“星期日”,索引 1 到“星期一”等等。

关于c - 如何打印结构的各个成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12287466/

相关文章:

C++ 结构大小不等于 C++/CLI 中的 C++ 结构大小?

c - 使用函数反转 C 中的字符串

r - 按时间间隔合并记录

c - scanf读取完全不同的数字

java - 如何检查当前时间是否在android中的预设时间范围内

javascript - 如何评估数组中每个项目包含 settimeout 的函数 (Javascript)

reflection - 在 Golang 结构字段中保存类型

c - 使用结构的节点

声明后更改结构的大小

c - dlclose 加载了 RTLD_NODELETE 的库