一、atoi函數實作
1、atoi (表示 ascii to integer)是把字元串轉換成整型數的一個函數。
2、C代碼實作如下
#include <stdio.h>
#include <ctype.h>
/*atoi() function:convert string to integer*/
int atoi(char str[])
{
int i = 0;
int sign = 0;/*record the sign*/
int n = 0;/*record the integer*/
while(isspace(str[i]))i++; /*skip white space*/
sign = (str[i] == '-')?-1:1;
if((str[i] == '+') ||(str[i] == '-'))i++; /*skip sign*/
while(isdigit(str[i]))
{
n = n*10 + (str[i] -'0');
i++;
}
return n*sign; /*return the integer value*/
}
int main(void) {
char s[] = "-123";
int n = 0;
n = atoi(s);
printf("integer = %d",n);
return 0;
}
二、itoa函數實作
1、itoa函數通過把整數的各位上的數字加“0”轉換成char類型并存到字元數組中。但是要注意,需要采用字元串倒置reverse函數處理下。
2、C代碼實作如下
#include <stdio.h>
#include <string.h>
/*reverse函數:倒置字元串S中各個字元的位置 */
void reverse(char s[])
{
int tmp = 0;
for(int i = 0,j = strlen(s)-1; i < j; i++, j--)
{
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
/*itoa函數,将數字轉換為字元串并儲存在S中 */
void itoa(int n,char s[])
{
int i = 0;
int sign = 0;
if((sign = n) < 0) //記錄符号
n = -n; //使n成為正數
do
{
s[i++] = n%10 + '0'; //取下一個數字
}while((n /= 10) > 0); //删除目前位上的數值
if(sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
int main(void) {
int n;
char s[20]; //save the string
n = -123; // test input integer
itoa(n,s); //convert function
printf("%s",s); //print the string
return 0;