這是一個通用的基礎程式,将數字字元串轉換為整型數。
這個程式會去掉字元串開始的空格,并且能夠轉換帶符号的整數。
該程式來自K&C的《C程式設計語言》一書。
程式如下:
/* 帶符号的atoi,跳過前面的空格 */
#include <stdio.h>
#include <ctype.h>
int atoi(char s[])
{
int n;
int i;
int 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 = n*10 + s[i]-'0';
n = sign * n;
return n;
}
int main(void)
{
printf("%d\n", atoi(" 356"));
printf("%d\n", atoi(" 1234567"));
printf("%d\n", atoi(" -356"));
printf("%d\n", atoi(" -1234567"));
return 0;
}
關鍵代碼:
#include <ctype.h>
int atoi(char s[])
{
int n;
int i;
int 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 = n*10 + s[i]-'0';
n = sign * n;
return n;
}