我已經聲明和初始化兩個變量,如下圖所示:int轉換爲char *在標準C(不itoa)
int a=5;
char* str;
str = (char*)calloc(255, sizeof(char));
我想爲int轉換爲char *標準C.我不能使用任何從C++轉換函數如itoa。
我使用Ubuntu 11.10
我已經聲明和初始化兩個變量,如下圖所示:int轉換爲char *在標準C(不itoa)
int a=5;
char* str;
str = (char*)calloc(255, sizeof(char));
我想爲int轉換爲char *標準C.我不能使用任何從C++轉換函數如itoa。
我使用Ubuntu 11.10
首先,itoa
是不是C++的事情。
您可以簡單地使用sprintf
:
sprintf(str, "%d", a)
在實際應用中,你需要使用snprintf
雖然刪除緩衝區溢出的危險:
str = malloc(16);
snprintf(str, 16, "%d", a);
而且15個字符的方式足以存儲一個整數。
'sizeof(char)'是每個定義等於1,'calloc'是矯枉過正的。而且,從'calloc'投射結果是沒用的。只需'str = malloc(BUFSIZE)'就足夠了。 – 2012-01-07 14:37:40
是的,只是從他的問題中複製而來。但是,有很多人總是使用calloc而不是malloc,即使其中一個參數是'1',因爲它會消除內存並且在分配之後省去執行memset的麻煩。 – ThiefMaster 2012-01-07 14:38:25
夠公平的,但考慮到你已經在進行更正了,我可能還想添加這些:) – 2012-01-07 14:39:16
爲什麼你不能使用itoa? – 2012-01-07 14:33:30
@rogelware:'itoa'不是標準的C函數,在Linux上不可用。 – 2012-01-07 14:37:04
標準C函數是什麼意思?它出現在 ..你的意思是你不能使用包括? (只是檢查,是的,itoa不是標準的) –
2012-01-07 14:39:07