【问题标题】:How to create time string from integers如何从整数创建时间字符串
【发布时间】:2012-11-05 12:29:43
【问题描述】:

我在 C 中有以下内容:

char time[8];
int hour= 5;
int minute = 4;
int second = 13;

输出应该如下;

Output:
"05:04:13" //printf("%s",time);

【问题讨论】:

    标签: c string integer char


    【解决方案1】:

    如果有,请使用snprintf(),否则使用sprintf()

    snprintf(time, sizeof time, "%02d:%02d:%02d", hour, minute, second);
    

    请注意,您的缓冲区太小,您需要 2 + 2 + 2 的数字,再加上两个冒号,再加上终止字符。所以至少应该是char time[9];。如果你使用snprintf(),它会正确截断,不会导致缓冲区溢出,但sprintf()会失败。

    【讨论】:

    • 谢谢,我不知道 sprintf 可以有超过 3 个参数。
    • @dare2k 这是一个不同的函数,注意开头的nsnprintf()sprintf() 不同。当然,两者都可以接受任意数量的参数,因为它们使用可变参数。
    【解决方案2】:

    你可以使用:

    sprintf(time, "%02d:%02d:%02d", hour, minute, second);
    printf("%s",time);
    

    【讨论】:

      【解决方案3】:

      只是通过将int 转换为char 字符串来实现相同结果的另一种(更长)方法。

      int hour= 5;
      int minute = 4;
      int second = 13;
      char hr[3];
      char min[3];
      char sec[3];
      
      itoa(hour, hr, 10);
      itoa(minute, min, 10);
      itoa(second, sec, 10);
      
      printf("%s:%s:%s", hr,min,sec);
      

      但只是为了明确this函数是is not defined in ANSI-C and is not part of C++, but is supported by some compilers.

      【讨论】:

      • 我正在使用 gnu 并且遇到了 itoa 的问题。
      猜你喜欢
      • 1970-01-01
      • 2012-10-11
      • 2016-08-16
      • 2015-09-10
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      相关资源
      最近更新 更多