在Mac OS X上使用C int到char数组

时间:2014-07-05 03:42:44

标签: c macos printf itoa

我正在尝试将int转换为char*。我使用的是Mac OS X,因此我无法使用itoa,因为它是非标准的,我正在尝试使用sprintfsnprintf,但我继续使用segmentation fault: 11 1}}。 这就是我所拥有的:

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

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

你如何申报消息?

这样的事情应该有效:

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

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