C言語におけるI/O(入力と出力)操作は、プログラムとユーザー、またはプログラムと他のシステム間でデータを交換するための重要な手段です。C言語では、標準ライブラリを利用して、コンソールやファイルといった異なるデータソースとのやり取りを簡単に実行することができます。
C言語でのI/O操作は、主に2つの大きなカテゴリに分けられます。それは、標準入力と標準出力と、ファイルI/Oです。標準入力と標準出力は、通常、キーボードと画面を指し、ファイルI/Oは外部ファイルとのデータの読み書きを扱います。これらの操作は、プログラムがどのようにデータを取り込むか、または結果をユーザーに表示するかを決定するため、非常に重要です。

標準入力と標準出力
C言語では、標準入力からデータを受け取るためにscanf
関数を使用し、標準出力にデータを表示するためにはprintf
関数を使用します。これらの関数は、ユーザーとのインタラクションを可能にするため、プログラムにおいて最も頻繁に使用される関数です。
printf
関数
printf
は、指定されたフォーマットに従って、標準出力にデータを表示するための関数です。文字列や整数、浮動小数点数など、さまざまなデータ型を表示することができます。
c#include
int main() {
int age = 25;
printf("年齢は %d 歳です。\n", age); // %d は整数のプレースホルダー
return 0;
}
上記のコードでは、整数型変数age
の値を標準出力に表示しています。
scanf
関数
scanf
は、標準入力からデータを読み取るための関数です。この関数は、入力されたデータを指定した変数に格納することができます。scanf
では、入力データの型を指定する必要があります。
c#include
int main() {
int age;
printf("年齢を入力してください: ");
scanf("%d", &age); // %d は整数を入力するための指定子
printf("入力された年齢は %d 歳です。\n", age);
return 0;
}
このコードでは、ユーザーから整数を入力してもらい、その値をage
という変数に格納し、標準出力に表示しています。
ファイルI/O
ファイルI/Oは、外部ファイルとのデータの読み書きに関する操作です。C言語では、fopen
、fclose
、fprintf
、fscanf
、fread
、fwrite
などの関数を使用して、ファイルの操作を行います。
ファイルを開く
ファイルを操作するためには、最初にそのファイルを開く必要があります。これにはfopen
関数を使用します。fopen
は、ファイル名とモードを指定してファイルを開きます。モードには、読み込み専用(”r”)、書き込み専用(”w”)、追加書き込み専用(”a”)などがあります。
c#include
int main() {
FILE *fp = fopen("data.txt", "w"); // "data.txt"という名前のファイルを開く
if (fp == NULL) {
printf("ファイルを開くことができませんでした。\n");
return 1;
}
fprintf(fp, "こんにちは、世界!\n"); // ファイルに文字列を書き込む
fclose(fp); // ファイルを閉じる
return 0;
}
このコードでは、data.txt
というファイルを開き、fprintf
関数を使ってデータを書き込み、その後fclose
でファイルを閉じています。
ファイルからデータを読み込む
ファイルからデータを読み込むには、fscanf
やfgets
などの関数を使用します。
c#include
int main() {
FILE *fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("ファイルを開くことができませんでした。\n");
return 1;
}
char str[100];
fgets(str, sizeof(str), fp); // ファイルから文字列を読み込む
printf("読み込んだ内容: %s\n", str);
fclose(fp);
return 0;
}
このコードでは、data.txt
ファイルから1行のテキストを読み込んで、その内容を標準出力に表示しています。
標準エラー出力
C言語では、エラーを報告するためにstderr
を使用することができます。通常の出力とは異なり、エラーは標準エラー出力に送られ、ユーザーにエラーメッセージを表示することができます。これを使って、エラー処理を行うことができます。
c#include
int main() {
FILE *fp = fopen("nonexistent.txt", "r");
if (fp == NULL) {
fprintf(stderr, "エラー: ファイルを開くことができませんでした。\n");
return 1;
}
fclose(fp);
return 0;
}
上記のコードでは、ファイルを開くことができなかった場合に、標準エラー出力を使ってエラーメッセージを表示しています。
結論
C言語におけるI/O操作は、プログラムと外部デバイス(キーボード、画面、ファイルなど)とのデータのやり取りを担当します。標準入力と標準出力を扱うscanf
やprintf
、ファイル操作を行うfopen
、fprintf
、fscanf
などの関数を使用することで、ユーザーとのインタラクションやデータの保存、読み込みを効率よく行うことができます。