fscanf関数の応用例
fscanf関数
は、ファイルからの読み込みや文字列からのデータの抽出に便利な関数です。
ここでは、fscanf関数
の応用例をいくつか紹介します。
CSVファイルの読み込み
CSV(Comma-Separated Values)ファイルは、データをカンマで区切って保存するテキストファイルの形式です。
CSVファイルからデータを読み込む場合、fscanf関数
を使用することで簡単にデータを取得することができます。
以下は、CSVファイルからデータを読み込むサンプルコードです。
#include <stdio.h>
int main() {
FILE *file = fopen("data.csv", "r");
if (file == NULL) {
printf("ファイルを開けませんでした。\n");
return 1;
}
int id;
char name[256];
int age;
while (fscanf(file, "%d,%[^,],%d\n", &id, name, &age) != EOF) {
printf("ID: %d, 名前: %s, 年齢: %d\n", id, name, age);
}
fclose(file);
return 0;
}
上記のコードでは、data.csv
という名前のCSVファイルを読み込んでいます。
ファイルを開くためにfopen
関数を使用し、ファイルが正しく開けなかった場合にはエラーメッセージを表示しています。
fscanf
関数では、書式指定子%d,%[^,],%d\n
を使用して、カンマで区切られたデータを読み込んでいます。
%d
は整数、%[^,]
はカンマ以外の文字列、%d\n
は整数と改行文字を表します。
フォーマットに基づいたデータの読み込み
fscanf関数
は、指定したフォーマットに基づいてデータを読み込むこともできます。
例えば、日付や電話番号などの特定の形式のデータを読み込む場合に便利です。
以下は、電話番号を読み込むサンプルコードです。
#include <stdio.h>
int main() {
char phone[12];
printf("電話番号を入力してください(ハイフンあり):");
scanf("%s", phone);
int areaCode, firstPart, secondPart;
sscanf(phone, "%d-%d-%d", &areaCode, &firstPart, &secondPart);
printf("市外局番:%d\n", areaCode);
printf("市内局番:%d\n", firstPart);
printf("加入者番号:%d\n", secondPart);
return 0;
}
上記のコードでは、scanf
関数を使用してユーザーから電話番号を入力してもらっています。
入力された電話番号は、sscanf
関数を使用して指定したフォーマットに基づいて分割され、それぞれの部分が別々の変数に格納されます。
複数のファイルからの読み込み
fscanf関数
は、複数のファイルからのデータを一度に読み込むこともできます。
以下は、複数のファイルからデータを読み込むサンプルコードです。
#include <stdio.h>
int main() {
FILE *file1 = fopen("data1.txt", "r");
FILE *file2 = fopen("data2.txt", "r");
if (file1 == NULL || file2 == NULL) {
printf("ファイルを開けませんでした。\n");
return 1;
}
int num1, num2;
fscanf(file1, "%d", &num1);
fscanf(file2, "%d", &num2);
printf("ファイル1のデータ:%d\n", num1);
printf("ファイル2のデータ:%d\n", num2);
fclose(file1);
fclose(file2);
return 0;
}
上記のコードでは、data1.txt
とdata2.txt
という2つのファイルからデータを読み込んでいます。
fopen
関数を使用してファイルを開き、fscanf
関数を使用してデータを読み込んでいます。
以上が、fscanf関数
の応用例の紹介です。
fscanf関数
は、さまざまなデータの読み込みに活用することができますので、ぜひ使い方をマスターして効率的なプログラミングを行いましょう。