1

我正在尝试将 a 转换intchar*. 我在 Mac OS X 上,所以我不能使用itoa,因为它是非标准的,我正在尝试使用sprintf,或者snprintf但我一直在使用segmentation fault: 11. 这是我所拥有的:

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

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

4

2 回答 2

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);
于 2014-07-05T03:51:28.260 回答
0

你如何声明味精?

像这样的东西应该工作:

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

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

于 2014-07-05T03:46:18.763 回答