fscanf | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページC言語編標準ライブラリのリファレンス(ヘッダ別)


fscanf関数 🔗

概要

任意のストリームから、変換指定を伴った文字列を受け取る。

ヘッダ

stdio.h

形式

int fscanf(FILE* restrict stream, const char* restrict format, …);

引数

stream

対象のストリーム。

format

変換指定を伴った文字列。

入力された値を受け取るメモリアドレスの指定。format に含まれている変換指定子に対応した個数と型であること。

戻り値

変換を1つも行えないまま入力エラーが起きた場合は、EOF を返す。その他の場合には、正常に代入を行えた個数を返す。

詳細

結果を任意のストリームから受け取ることを除き、scanf関数と同様であり、同じ機能を持つ。

注意

必要な個数の実引数が指定されていない場合の動作は未定義。余分に指定されている場合には、評価は行われるが、fscanf関数としては無視する。

使用例
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE* fp = fopen("test.txt", "r");
    if (fp == NULL) {
        fputs("ファイルオープンに失敗しました。\n", stderr);
        exit(EXIT_FAILURE);
    }

    int num;
    char str[10];
    double f;
    if (fscanf(fp, "%d %s %lf", &num, str, &f) == EOF) {
        fputs("ファイルからの読み込みに失敗しました。\n", stderr);
        exit(EXIT_FAILURE);
    }
    printf("%d %s %lf\n", num, str, f);

    if (fclose(fp) == EOF) {
        fputs("ファイルクローズに失敗しました。\n", stderr);
        exit(EXIT_FAILURE);
    }
}

入力ファイル (test.txt):

100 abc 2.500000

実行結果:

100 abc 2.500000
関連

標準入力に特化した、scanf関数がある。対象が文字列の場合は、sscanf関数が使える。

引数に … ではなく、va_list を用いたバージョンとして、vscanf関数がある。

ワイド文字の wscanf関数がある。
解説章

第41章


参考リンク 🔗

本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place 管理者に紹介料が支払われています。


更新履歴 🔗

 解説中で C95 を(C89 に対して)特別扱いしないように修正。そもそもC言語編は C95ベースなので、余計な説明は省く。

 全体的に文章を見直し修正。

 C言語編全体で表記を統一するため、「フォーマット指定」を「変換指定」に改めた。

 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る