1. 程式人生 > >C51 數字和字串互相轉化

C51 數字和字串互相轉化


一、atoi()——把字串轉換成整型數
考點:字串轉換為數字時,對相關ASCII碼的理解。 C實現:
#include <ctype.h>
#include <stdio.h>
int atoi (char s[]);
int main(void )
{
char s[100];
gets(s);
printf("integer=%d\n",atoi(s));
return 0;
}
int atoi (char s[])
{
int i,n,sign;
for(i=0;isspace(s[i]);i++)//跳過空白符;
sign=(s[i]=='-')?-1:1;
if(s[i]=='+'||s[i]==' -')//跳過符號
  i++;
for(n=0;isdigit(s[i]);i++)
       n=10*n+(s[i]-'0');
//將數字字元轉換成整形數字
return sign *n;
}


C++實現:
1    #include <iostream>
2    using namespace std;
3  
4    int str2int(const char *str)
5    {
6        int temp = 0;
7        const char *ptr = str;  //ptr儲存str字串開頭
8  
9        if (*str == '-' || *str == '+')  //如果第一個字元是正負號,
10       {                      //則移到下一個字元
11           str++;
12       }
13       while(*str != 0)
14       {
15           if ((*str < '0') || (*str > '9'))  //如果當前字元不是數字
16           {                       //則退出迴圈
17               break;
18           }
19           temp = temp * 10 + (*str - '0'); //如果當前字元是數字則計算數值
20           str++;      //移到下一個字元
21       }  
22       if (*ptr == '-')     //如果字串是以“-”開頭,則轉換成其相反數
23       {
24           temp = -temp;
25       }
26 
27       return temp;
28   }
29 
30   int main()
31   {
32       int n = 0;  
33       char p[10] = "";
34 
35       cin.getline(p, 20);   //從終端獲取一個字串
36       n = str2int(p);      //把字串轉換成整型數
37      
38       cout << n << endl;
39 
40       return 0;
41   }

二、itoa()——把一整數轉換為字串
通過把整數的各位上的數字加“0”轉換成char型別並存到字元陣列中。但是要注意,需要採用字串逆序的方法