【问题标题】:Converting int to char with unknown int size将 int 转换为 int 大小未知的 char
【发布时间】:2015-03-06 21:24:09
【问题描述】:

我正在使用以下功能:

hourFormat12() returns -> 1-12
minute() returns -> 1-60

如何在不知道 int 是一位数还是两位数的情况下将这些整数转换为字符?

我习惯了 Java 和字符串,我通常可以在初始化字符串时这样做:

String myString = "12" + ":" + "30" + "AM";

如何在不知道每个字符串大小的情况下使用 char 数组来实现。

【问题讨论】:

  • “如何在不知道 int 是一位数还是两位数的情况下将这些整数转换为字符?”:sprintf(newstring, "%d", intvar)?
  • 一种方式:sprintf(buffer, "%d:%02d AM", hour, minute); 这使用 1 位或 2 位数字表示小时,但始终使用 2 位数字表示分钟。如果分钟只有一位,%02d 格式将在前面加上 0
  • sprintf(buffer, "%d:%02d AM", 小时, 分钟);就像一个魅力,谢谢!

标签: c char


【解决方案1】:

典型的 C 方法是确定输出的最大大小,并将其用作 char 数组的大小。如果您想 100% 可移植,<limits.h> 中有宏。不要忘记空终止符!

【讨论】:

    【解决方案2】:

    您创建一个足够大的 char 数组以在检查后容纳数据。

    在这种情况下,由于数组所需的最大大小为 8 个字符(包括空终止符),因此您可以简单地不必为此烦恼并使用 8 的固定大小。

    【讨论】:

    • 谢谢,但是当我有一个 char 数组时,我不能使用 + 运算符将文本字符串添加在一起?像 char* test[8] = "Test1" + "Test2";
    • C 无法识别字符串文字上的+。这是您需要使用@Evert 评论的地方。
    • @Degustaf: C 不允许 + 带有两个字符串文字操作数。它确实 允许+ 带有字符串文字和整数——但它执行指针添加,而不是字符串连接。例如,printf("%s\n", "Hello" + 3); 打印 lo。 (我提到这一点是因为习惯 Java 的人可能希望避免意外地这样做。)
    • @KeithThompson 谢谢,我不知道。但是,这肯定不是 OP 感兴趣的。
    • @JackTrowbridge:不,你永远不能用 C 中的“字符串”来做到这一点。你只需在正确的位置手动将内容复制到数组中。还要注意空终止符所需的额外字符——即使它有效,您的示例代码也会尝试将 9 个字符填充到大小为 8 的缓冲区中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    相关资源
    最近更新 更多