C言語筆記試験問題(15)——atoi関数実現


機能:文字列を整数に変換する. 
プロトタイプ:int atoi(const char*nptr);  
関数の説明:パラメータnptr文字列、最初の非スペース文字が存在しないか、数値でも正負でもない場合はゼロを返します.そうしないとタイプ変換が開始されます.
#include 
#include 

int atoi(const char *str)
{
    int num = 0;
    int sign = 0;

    assert(str != NULL);

    while (*str == ' ' || *str == '
' || *str == '\t') str++; if (*str == '-') { sign = 1; str++; } while(*str <= '9' && *str >= '0') { num *= 10; num += *str - '0'; str++; } if (sign == 1) num *= -1; return num; } int main(int argc, const char *argv[]) { char str[] = "-2147483648"; printf("%d
", atoi(str)); return 0; }

その後、終了文字0を含む数字以外の文字が検出された場合は変換を停止し、整数を返します.