C言語のfscanf_s関数の使い方やメリットについてわかりやすく詳しく解説

この記事では、C言語のfscanf_s関数の使い方について解説します。

fscanf_s関数を使用することで、ファイルからのデータの読み込みや文字列からのデータの読み込みができます。

また、フォーマット指定子を使ってデータの形式を指定する方法や、エラーハンドリングの方法、注意点なども紹介します。

初心者の方でもわかりやすく解説しているので、ぜひ参考にしてください。

目次から探す

fscanf_s関数とは

fscanf_s関数は、C言語でファイルからデータを読み込む際に使用される関数です。

この関数を使うことで、ファイルから指定した書式に従ったデータを読み込むことができます。

fscanf_s関数の概要

fscanf_s関数は、以下のような形式で使用します。


int fscanf_s(FILE* stream, const char* format, ...);

この関数は、指定したファイルストリームからデータを読み込み、指定した書式に従って変数に格納します。

読み込んだデータの数を返します。

fscanf_s関数の特徴

fscanf_s関数の特徴は以下の通りです。

安全性の向上

fscanf_s関数は、バッファオーバーフローのリスクを軽減するために導入された関数です。

従来のfscanf関数とは異なり、読み込むデータの長さを指定する必要があります。

書式指定子の使用

fscanf_s関数では、書式指定子を使用してデータの型やフォーマットを指定します。

例えば、整数を読み込む場合は”%d”、文字列を読み込む場合は”%s”といった具体的な書式指定子を使用します。

エラーチェック

fscanf_s関数は、読み込みに成功したデータの数を返します。

この値をチェックすることで、読み込みが正常に行われたかどうかを確認することができます。

以上がfscanf_s関数の概要と特徴です。

この関数を使うことで、ファイルからデータを安全に読み込むことができます。

次のセクションでは、具体的な使用例を示します。

fscanf_s関数の基本的な使い方

fscanf_s関数は、C言語でファイルからデータを読み込むための関数です。

この関数を使用することで、ファイルから文字列や数値データを読み込むことができます。

ファイルからの読み込み

まずは、ファイルからの読み込みについて説明します。

以下のようなテキストファイル(sample.txt)があるとします。

Apple
Banana
Cherry

このファイルから1行ずつデータを読み込んで表示するプログラムを作成してみましょう。


#include <stdio.h>
int main() {
    FILE* file = fopen("sample.txt", "r");
    if (file == NULL) {
        printf("ファイルを開くことができませんでした。\n");
        return 1;
    }
    char str[100];
    while (fscanf_s(file, "%s", str, sizeof(str)) != EOF) {
        printf("%s\n", str);
    }
    fclose(file);
    return 0;
}

このプログラムでは、まずファイルを開くためにfopen関数を使用しています。

ファイルが正しく開けなかった場合は、エラーメッセージを表示してプログラムを終了します。

次に、fscanf_s関数を使用してファイルからデータを読み込みます。

%sは文字列を読み込むための書式指定子です。

読み込んだデータはstr変数に格納され、printf関数を使用して表示します。

最後に、ファイルを閉じるためにfclose関数を使用しています。

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

Apple
Banana
Cherry

文字列からの読み込み

次に、文字列からの読み込みについて説明します。

以下のような文字列があるとします。


char str[] = "Hello, World!";

この文字列からデータを読み込んで表示するプログラムを作成してみましょう。


#include <stdio.h>
int main() {
    char str[100] = "Hello, World!";
    int num;
    sscanf_s(str, "%d", &num);
    printf("%d\n", num);
    return 0;
}

このプログラムでは、sscanf_s関数を使用して文字列からデータを読み込んでいます。

%dは整数を読み込むための書式指定子です。

読み込んだデータはnum変数に格納され、printf関数を使用して表示します。

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

0

数値データの読み込み

最後に、数値データの読み込みについて説明します。

以下のようなテキストファイル(numbers.txt)があるとします。

10 20 30

このファイルから数値データを読み込んで合計を計算するプログラムを作成してみましょう。


#include <stdio.h>
int main() {
    FILE* file = fopen("numbers.txt", "r");
    if (file == NULL) {
        printf("ファイルを開くことができませんでした。\n");
        return 1;
    }
    int num, sum = 0;
    while (fscanf_s(file, "%d", &num) != EOF) {
        sum += num;
    }
    printf("合計: %d\n", sum);
    fclose(file);
    return 0;
}

このプログラムでは、ファイルから数値データを読み込んで合計を計算しています。

%dは整数を読み込むための書式指定子です。

読み込んだデータはnum変数に格納され、合計を計算するためにsum変数を使用しています。

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

合計: 60

以上がfscanf_s関数の基本的な使い方についての説明です。

ファイルからの読み込みや文字列からの読み込み、数値データの読み込みについて理解していただけたかと思います。

1 2 3

目次から探す