天天看點

B00005 函數atoi()(去空格,帶符号)

這是一個通用的基礎程式,将數字字元串轉換為整型數。

這個程式會去掉字元串開始的空格,并且能夠轉換帶符号的整數。

該程式來自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;
}