C語言把數字轉換為字符串的函數


博主原文

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM