整數轉換爲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