【问题标题】:C int to char array on Mac OS XMac OS X 上的 C int 到 char 数组
【发布时间】:2023-03-23 11:15:01
【问题描述】:

我正在尝试将 int 转换为 char*。我在 Mac OS X 上,所以我不能使用 itoa,因为它是非标准的,我正在尝试使用 sprintfsnprintf,但我不断收到 segmentation fault: 11。 这是我得到的:

snprintf(msg, sizeof(char *), "%d", 1);

所以我希望得到一个建议,我该怎么办?

【问题讨论】:

  • 我猜msg 是一个没有分配任何内存的char *,是吗?
  • 是的,它是一个 char* 变量
  • 那我猜你还没有分配任何内存给它。让我写一个答案。
  • 是的,就是这样,抱歉这么简单的错误……没想到要先分配。

标签: c macos printf itoa


【解决方案1】:

很可能msg,即char *,并不指向它可以使用的内存。因此,您首先必须动态分配将用于存储字符串的内存。

msg = malloc(12); // 12 is an arbitrary value
snprintf(msg, 12, "%d", 1); // second parametre is max size of string made by function

或者,您也可以声明一个静态缓冲区。这样,您就不必释放任何内存。

char msg[12]; // again, 12 is an arbitrary value
snprintf(msg, sizeof(msg), "%d", 1);

【讨论】:

    【解决方案2】:

    你如何声明味精?

    这样的事情应该可以工作:

    char msg[15];
    snprintf(msg, sizeof(msg), "%d", 1);
    

    注意snprintf 的第二个参数是字符串的长度,而不是字符的大小。

    【讨论】:

      猜你喜欢
      • 2014-11-30
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 2012-08-09
      • 1970-01-01
      相关资源
      最近更新 更多