C語言itoa()函數和atoi()函數詳解(整數轉字符C實現)
C語言提供了幾個標准庫函數,可以將任意類型(整型、長整型、浮點型等)的數字轉換為字符串。
1.int/float to string/array:
C語言提供了幾個標准庫函數,可以將任意類型(整型、長整型、浮點型等)的數字轉換為字符串,下面列舉了各函數的方法及其說明。
● itoa():將整型值轉換為字符串。
● ltoa():將長整型值轉換為字符串。
● ultoa():將無符號長整型值轉換為字符串。
● gcvt():將浮點型數轉換為字符串,取四舍五入。
● ecvt():將雙精度浮點型值轉換為字符串,轉換結果中不包含十進制小數點。
● fcvt():指定位數為轉換精度,其余同ecvt()。
除此外,還可以使用sprintf系列函數把數字轉換成字符串,其比itoa()系列函數運行速度慢
2. string/array to int/float
C/C++語言提供了幾個標准庫函數,可以將字符串轉換為任意類型(整型、長整型、浮點型等)。
● atof():將字符串轉換為雙精度浮點型值。
● atoi():將字符串轉換為整型值。
● atol():將字符串轉換為長整型值。
● strtod():將字符串轉換為雙精度浮點型值,並報告不能被轉換的所有剩余數字。
● strtol():將字符串轉換為長整值,並報告不能被轉換的所有剩余數字。
● strtoul():將字符串轉換為無符號長整型值,並報告不能被轉換的所有剩余數字。
#include<stdio.h>
#include<stdlib.h>
void num_to_str()
{
int a = 10086;
char buff[10] = {0};
itoa(a,buff,10);//將a以10進制的形式寫入buff中
printf("%s\n", buff);
}
void str_to_num()
{
char *p = "10001";
printf("%d\n", atoi(p));//atoi直接返回整形轉換后的數據
}
int main()
{
num_to_str();
str_to_num();
return 0;
}
這里需要注意的是,atoi和itoa均為windows系統下stdlib.h文件內的庫函數,因此,如果在Linux系統即使包含stdlib.h這個頭文件,編譯時仍然會提示這兩個函數沒有定義過。
類似這樣
運行結果
在Linux系統下要將一個數字轉換為字符串最好使用sprintf函數
#include<unistd.h>
#include<iostream>
using namespace std;
void num_to_str()
{
int a = 10086;
char buff[10] = {0};
char *p = "10001";
sprintf(buff, "%d", a);//第一個參數為要寫入字符串的地址,第二個參數為第三個參數的類型,第三個參數為要寫入的數據
printf("%s\n", buff);
sprintf(buff, "%s", p);//這步可以看出sprintf的寫入方式為清空寫入
printf("%s\n", buff);
}
int main()
{
num_to_str();
return 0;
}
運行結果
//////////////////////////////////////////////////////
最后貼一個自己寫的將字符串轉換為數字的函數 myatoi