我正在尝试将 a 转换int
为char*
. 我在 Mac OS X 上,所以我不能使用itoa
,因为它是非标准的,我正在尝试使用sprintf
,或者snprintf
但我一直在使用segmentation fault: 11
. 这是我所拥有的:
snprintf(msg, sizeof(char *), "%d", 1);
所以我希望得到一个建议,我该怎么办?
很可能msg
,它是 a 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);
你如何声明味精?
像这样的东西应该工作:
char msg[15];
snprintf(msg, sizeof(msg), "%d", 1);
请注意,第二个参数snprintf
是字符串的长度,而不是字符的大小。