C言語筆記試験問題(15)——atoi関数実現
888 ワード
機能:文字列を整数に変換する.
プロトタイプ:int atoi(const char*nptr);
関数の説明:パラメータnptr文字列、最初の非スペース文字が存在しないか、数値でも正負でもない場合はゼロを返します.そうしないとタイプ変換が開始されます.
その後、終了文字0を含む数字以外の文字が検出された場合は変換を停止し、整数を返します.
プロトタイプ: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を含む数字以外の文字が検出された場合は変換を停止し、整数を返します.