自寫函式實現數字與字串之間的相互轉化,不使用itoa函式
阿新 • • 發佈:2019-01-27
一、自定義函式實現
思路:整數轉化為字串,可以採用加'0',然後再逆序,整數加'0'就會隱性轉化為char型別的數;
字串轉化為整數,可以採用減'0',再乘以10累加的方法,字串減'0'就會隱性的轉化為int型別的數。
截圖如下:<span style="font-family:SimSun;font-size:18px;"> //*************************************************************** //實現數字到字串的轉化,不借助itoa函式 int num=12345,j=0,i=0; char temp[7]={0},str[7]={0};//若不初始化則,需要加temp[j]=0和str[i]=0 while(num) { temp[j]=num%10+'0'; j++; num/=10; } //temp[j]=0; printf("temp=%s\n",temp);//倒序的字串 j--; while(j>=0) { str[i]=temp[j]; j--; i++; } //str[i]=0; printf("string=%s\n",str);//這裡將其逆序, i=0; int num_str=0; while(i<strlen(str))//字元型轉化為整數 { int mid=str[i]-'0'; num_str=num_str*10+mid; i++; } printf("int num=%d\n",num_str); //***************************************************************</span>
二、擴充套件,使用itoa(),atoi()函式
(1)。itoa()函式
C語言提供了幾個標準庫函式,可以將任意型別(整型、長整型、浮點型等)的數字轉換為字串。
函式原型:char
*itoa(
int
value,
char
*string,
int
radix);
itoa()函式有3個引數:第一個引數是要轉換的數字,第二個引數是要寫入轉換結果的目標字串,第三個引數是轉移數字時所用 的基數。在上例中,轉換基數為10。10:十進位制;2:二進位制...
(2)。atoi()函式
函式原型:int atoi(const char *nptr);
截圖如下<span style="font-family:SimSun;font-size:18px;"> num=12345; int i_strght=atoi(str); printf("straight int=%d\n",i_strght); char straight_char[7]; itoa(num,straight_char,10); printf("straight char=%s\n",straight_char);</span>