整数转换为char*
指针,以便我可以正常发送参数到另一个函数。
通过经由化合物字面调用带有char
阵列的辅助函数转换的数目创建的数量的串表示。该字符串对于该函数和该代码块的末尾是有效的。足够的弦的大小是重要的 - 留下一个单独的练习。这里的代码使用41,足够用于128位int
。不需要通过malloc()/free()
进行内存管理,以获得如此小的缓冲区。
char *my_itoa(char *dest, int i) {
sprintf(dest, "%d", i);
return dest;
}
#define ITOA(n) my_itoa((char [41]) { 0 }, (n))
int main(void) {
int number=2123, number2= 1233;
printf("<%s> <%s>\n", ITOA(number), ITOA(number2));
printf("<%s> <%s> <%s>\n", ITOA(INT_MIN), ITOA(0), ITOA(INT_MAX));
}
输出
<2123> <1233>
<-2147483648> <0> <2147483647>
所以,你希望arg []中的参数是数字的字符串表示,就像上面的“2123”和“1233”一样? – Joe
你很困惑。你真的想把数字转换成它的字符表示(在这种情况下,你需要像sprintf())?或者,你的函数使用char *知道如何处理整数的地址?此外,您需要为arg [],arg [0]和arg [1]分配内存。 –
为什么你不能首先使用'atoi'? – myaut