【C言語】文字列を数値に変換するatoi関数の使い方を解説

C言語において、文字列を数値に変換するための関数として「atoi」があります。

この記事では、初心者でも簡単に理解できるよう、atoi関数の使い方や注意点をサンプルコードを交えて詳しく解説します。

目次

atoi関数とは

atoi関数は、C言語の標準ライブラリに含まれる関数で、文字列を整数値に変換するために使用されます。

使い方

以下は、atoi関数を使用して文字列を整数値に変換する例です。

#include <stdio.h>
#include <stdlib.h>

int main() {
    char str[] = "1234";
    int num = atoi(str);
    printf("num = %d\n", num);
    return 0;
}

上記のプログラムでは、文字列 "1234"atoi 関数で整数値に変換し、その結果を num 変数に代入しています。そして、printf 関数で num の値を出力しています。

実行結果は以下のようになります。

num = 1234

また、引数として渡す文字列が数字以外の場合や空白文字が含まれている場合は、0が返されます。

ただし、文字列の先頭が数字だった場合、数字以外の文字が現れるまでの数字が変換されます。

char str1[] = "12a3";
char str2[] = "   ";
int num1 = atoi(str1);
int num2 = atoi(str2);
printf("num1 = %d, num2 = %d\n", num1, num2);
num1 = 12, num2 = 0

num2は数字がないため0が返されていますが、num1は先頭2文字"12"だけが変換されます。

エラー処理

C言語において、プログラムを実行する際にはエラーが発生する可能性があります。そのため、エラー処理を適切に行うことが重要です。

例えば、atoi関数を使用する場合、引数として渡された文字列が数字でない場合や、オーバーフローが発生した場合にはエラーが発生します。このような場合には、atoi関数は0を返します。

以下は、atoi関数を使用した際のエラー処理の例です。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char str[] = "123abc";
    int num;

    num = atoi(str);

    if (num == 0 && str[0] != '0') {
        printf("Error: Invalid input\n");
        return 1;
    }

    printf("num = %d\n", num);

    return 0;
}

上記のコードでは、変換後の値が0でかつ最初の文字が’0’でない場合には、「Error: Invalid input」というメッセージを表示し、プログラムを終了させるようにしています。

このように、エラー処理を適切に行うことでプログラムの安定性や信頼性を高めることが出来ます。

目次