C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス scanf

🔧 入出力 ・ stdio.h ・ C89

scanf の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

int scanf(const char *format, ...);

どんな関数か

標準入力から書式に従って値を読み取り、対応する変数へ格納する。各変換指定子には&を付けたポインタを渡す必要があり、渡し忘れは典型的なバグになる。戻り値は正常に読み取れた項目数。 誤入力があると読み取りが途中で止まり、以降の変数に値が入らないまま処理が進んでしまう点にも注意する。

使用例

#include <stdio.h>
int main(void) {
    int age;
    printf("age? ");
    scanf("%d", &age);
    printf("you are %d\n", age);
    return 0;
}

つまずきやすい注意点

⚠️ &を付け忘れるとクラッシュしやすい。%sはバッファサイズを指定できず溢れる危険があるため、幅指定(%19s)かfgets+sscanfを推奨。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

scanf と一緒に使う関数

fscanfストリームから書式に従って値を読み取る。ファイルから構造化データを読み込む際に使うが、区切り文字が想定外だと簡単に同期が… sscanf文字列から書式に従って値を読み取る。ファイルや標準入力を経由せず、既にメモリ上にある文字列を解析したいときに使う。簡易的… fgetsストリームから最大n-1文字を1行読み取り、末尾に\0を付けてバッファへ格納する安全な入力関数。改行文字も含めて読み取る…

この関数が出てくる解説

main関数と#includemainが実行の入口であること、#includeがヘッダファイルを取り込む指示であることを説明できる do-while文と入力チェックdo-while の「まず1回は実行する」性質を理解し、入力のやり直しループを書ける プロトタイプ宣言プロトタイプ宣言の役割を理解し、関数を好きな順番で書けるようになる 安全な文字列操作——バッファサイズの意識バッファオーバーフローの危険を理解し、snprintfやfgetsで安全に書ける

同じ分類(入出力)の関数

fclose feof ferror fflush fgetc fgets fopen fprintf fputc fputs fread fscanf fseek ftell fwrite getchar

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る