【问题标题】:How to print individual members of a struct如何打印结构的各个成员
【发布时间】:2012-08-30 12:41:24
【问题描述】:

我需要按以下格式打印当前日期:今天是星期三 - 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);

【问题讨论】:

  • “我似乎无法让它正常工作”——你试过什么?您发布的代码无关紧要,因为它调用 strftime。另外,由于这是作业,请添加作业标签。

标签: c time struct printf


【解决方案1】:

结构体 tm 至少有这些 members

int tm_sec 秒 [0,60]。 int tm_min 分钟 [0,59]。 int tm_hour 小时 [0,23]。 int tm_mday 日期 [1,31]。 int tm_mon 一年中的月份 [0,11]。 int tm_year 自 1900 年以来的年份。 int tm_wday 星期[0,6](星期日=0)。 int tm_yday 一年中的某一天 [0,365]。 int tm_isdst 夏令时标志。

所以现在你可以做例如

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

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

【讨论】:

  • 用 cout 做这个怎么样?
  • 应该是tm_info-&gt;tm_mon+1(月份范围是0-11,一月是0)
【解决方案2】:

您可以使用 `-> 解引用运算符访问结构的各个元素:

printf("Time is %02d:%02d:%02d\n", tm_info->tm_hour, tm_info->min, tm_info->tm_sec);

您可以找到struct tmhere的所有必填字段。

【讨论】:

    【解决方案3】:

    您需要单独传递struct tm 的每个成员:

    printf("Hour: %d  Min: %d  Sec: %d\n",
        tm_info->tm_hour,
        tm_info->tm_min,
        tm_info->tm_sec
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-02
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 2020-05-06
      • 1970-01-01
      相关资源
      最近更新 更多