2012-01-07 29 views
2

我已經聲明和初始化兩個變量,如下圖所示:int轉換爲char *在標準C(不itoa)

int a=5; 
char* str; 
str = (char*)calloc(255, sizeof(char)); 

我想爲int轉換爲char *標準C.我不能使用任何從C++轉換函數如itoa。

我使用Ubuntu 11.10

+3

爲什麼你不能使用itoa? – 2012-01-07 14:33:30

+1

@rogelware:'itoa'不是標準的C函數,在Linux上不可用。 – 2012-01-07 14:37:04

+0

標準C函數是什麼意思?它出現在 ..你的意思是你不能使用包括? (只是檢查,是的,itoa不是標準的) – 2012-01-07 14:39:07

回答

12

首先,itoa是不是C++的事情。

您可以簡單地使用sprintf

sprintf(str, "%d", a) 

在實際應用中,你需要使用snprintf雖然刪除緩衝區溢出的危險:

str = malloc(16); 
snprintf(str, 16, "%d", a); 

而且15個字符的方式足以存儲一個整數。

+3

'sizeof(char)'是每個定義等於1,'calloc'是矯枉過正的。而且,從'calloc'投射結果是沒用的。只需'str = malloc(BUFSIZE)'就足夠了。 – 2012-01-07 14:37:40

+0

是的,只是從他的問題中複製而來。但是,有很多人總是使用calloc而不是malloc,即使其中一個參數是'1',因爲它會消除內存並且在分配之後省去執行memset的麻煩。 – ThiefMaster 2012-01-07 14:38:25

+0

夠公平的,但考慮到你已經在進行更正了,我可能還想添加這些:) – 2012-01-07 14:39:16