
C言語入門|atoiで文字列を整数に変換する:数値文字列を計算に利用する方法
ここでは、
「文字列として持っている数字を、計算に使える整数に変換する方法」
を学んでいきます😊
画面表示や入力処理を作っていると、
「見た目は数字なのに、計算できない…🤔」
という場面に必ず出会います。
そのときに活躍するのが、今回紹介する atoi という命令です✨

文字列の数字は、そのままでは計算できない😮
たとえば、次のような変数があるとします。
String age = "10";この "10" は、
👉 数字ではなく「文字の並び」
として扱われています。
そのため、
age + 1のような計算はできません💦
C言語にとっては、「文字列に 1 を足す」という意味不明な処理だからです。
atoiとはどんな命令?😊
そんなときに使うのが atoi です。
atoi は、
👉 文字列を整数(int型)に変換する命令
です✨
書き方はとてもシンプルですよ👇
int n = atoi(➀);| 項目 | 内容 |
|---|---|
| ➀ | 数字として解釈できる文字列 |
| 戻り値 | int 型の整数 |
| 必要なヘッダ | stdlib.h |
※ printf のときとは違い、stdlib.h が必要なので注意しましょう🙂
atoiの役割をひとことで言うと✨
atoi は、
「文字列の数字を、本物の数字に化けさせる命令」
です😆
見た目は同じ「29」でも、
- "29" → 文字列
- 29 → 整数
この違いを埋めてくれるのが atoi なんですね。
サンプルプログラムで確認してみよう🧪
少し内容をアレンジしたサンプルを見てみましょう。
プロジェクト名:3-11-1 ソースファイル名: sample3-11-1.c
#include <stdio.h>
#include <stdlib.h>
typedef char String[1024];
int main(void)
{
String score = "45";
int point = atoi(score);
printf("ボーナス込みの得点は %d 点です。\n", point + 5);
return 0;
}このプログラムでは、
1️⃣ score に文字列 "45" が入る
2️⃣ atoi(score) によって整数 45 に変換
3️⃣ 5 を足して計算
4️⃣ 結果を画面に表示
という流れになっています😊
atoiは「式」として評価される✨
ここ、ちょっと大事なポイントです☝️
int point = atoi(score);この atoi(score) は、
👉 命令の実行結果として整数に評価される式
なんです。
つまり、次のような書き方もできます🙂
printf("%d\n", atoi(score) + 5);atoi(score) が評価されて整数に置き換わり、
そのあとに + 5 の計算が行われます。
「命令の実行も、実は式の一種」
という考え方、ここでしっかり身につけておきましょう✨
数字以外の文字が含まれていたら?🤔
atoi は、少しクセのある動作もします。
たとえば👇
atoi("10A23");この場合、
- 数字の 10 までは読む
- A が出てきた時点でストップ
結果は 10 になります😮
さらに、
atoi("ABC");のように、
最初から数字が含まれていない場合は 0 が返されます。
atoiを使うときの注意点⚠️
atoi はとても便利ですが、
エラーを知らせてくれない という弱点があります。
- 変換できなくても 0 が返る。
- 本当に 0 なのか、失敗したのか判別しにくい。
そのため、
本格的な入力チェックが必要な場面では注意が必要
ということも、頭の片隅に置いておきましょう🙂
(入門段階では、まず「使えるようになる」ことが大切なので安心してください✨)
atoiでできるようになること🎉
atoi を覚えると、
- 文字列として受け取った数値を計算に使える。
- 入力値を使ったプログラムが書ける。
- 表示だけでなく「処理するプログラム」に近づく。
と、一気にできることが広がります😊
ここまで理解できれば、
「文字列」と「数値」を行き来できるプログラム が書けるようになります🎊
