我正在尝试将int
转换为char*
。我使用的是Mac OS X,因此我无法使用itoa
,因为它是非标准的,我正在尝试使用sprintf
或snprintf
,但我继续使用segmentation fault: 11
1}}。
这就是我所拥有的:
snprintf(msg, sizeof(char *), "%d", 1);
所以我希望得到一个建议,我该怎么办?
答案 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
的第二个参数是字符串的长度,而不是字符的大小。