【C言語】stdio.hを使ってコンソールやファイルにデータを読み書きする【標準ライブラリ】
stdio.hの紹介
C言語では、標準入出力を扱うために「stdio.h」というヘッダファイルが使用されます。このヘッダファイルには、コンソールやファイルにデータを読み書きするための関数が多数定義されています。特に、標準出力への書き込みや標準入力からの読み込みを行う関数は、C言語プログラムでよく使用されます。
代表的な関数には、データをコンソールに出力する「printf」、ユーザーから入力を受け取る「scanf」、ファイルを操作する「fopen」や「fclose」などがあります。これらを活用することで、ユーザーとのインタラクションやファイル操作を効率的に行うことができます。
printf関数の使い方
「printf」は、コンソールにテキストや変数の値を出力するために使います。基本的な構文は以下の通りです。
printf("フォーマット文字列", 引数1, 引数2, ...);
例えば、文字列を表示したい場合は次のように記述します。
#include
int main() {
printf("こんにちは、C言語!\n");
return 0;
}
また、数値や変数の値を表示することも可能です。フォーマット指定子(%d、%f、%sなど)を使って、適切な形式で出力できます。
#include
int main() {
int a = 10;
float b = 3.14;
printf("整数: %d, 浮動小数点数: %.2f\n", a, b);
return 0;
}
上記のプログラムでは、整数「a」と浮動小数点数「b」を、それぞれ整数と浮動小数点数としてフォーマットして表示しています。
scanf関数の使い方
「scanf」は、標準入力からデータを受け取るために使用します。基本的な構文は次の通りです。
scanf("フォーマット文字列", &変数1, &変数2, ...);
ユーザーからの入力を受け取る例として、次のコードを示します。
#include
int main() {
int age;
printf("年齢を入力してください: ");
scanf("%d", &age);
printf("あなたの年齢は %d 歳です。\n", age);
return 0;
}
このプログラムは、ユーザーに年齢を入力させ、それを整数として「age」に格納し、再度出力します。注意点として、変数に値を格納する際は、変数のアドレスを渡すため「&」を使う必要があります。
ファイル入出力
stdio.hには、ファイルを操作するための関数も含まれています。これにより、ファイルの読み書きが可能になります。代表的な関数には「fopen」、「fclose」、「fread」、「fwrite」、「fprintf」、「fscanf」などがあります。
ファイルを開くには「fopen」を使います。以下は、ファイルへの書き込みの例です。
#include
int main() {
FILE *file = fopen("output.txt", "w"); // 書き込みモードでファイルを開く
if (file == NULL) {
printf("ファイルを開けませんでした。\n");
return 1;
}
fprintf(file, "こんにちは、ファイル!\n");
fclose(file);
return 0;
}
上記のコードでは、output.txtというファイルを開き、「こんにちは、ファイル!」という文字列を書き込んでいます。ファイルを操作した後は、必ず「fclose」でファイルを閉じることを忘れないようにしましょう。
エラーハンドリング
標準入出力でエラーが発生した場合、エラーハンドリングを行うことが重要です。例えば、「fopen」でファイルを開く際にファイルが存在しない場合など、エラーが発生することがあります。この場合、戻り値をチェックしてエラーを処理します。
例えば、ファイルが開けない場合にエラーメッセージを表示するコードは以下のようになります。
#include
int main() {
FILE *file = fopen("nonexistent.txt", "r"); // 存在しないファイルを開こうとする
if (file == NULL) {
perror("エラー");
return 1;
}
fclose(file);
return 0;
}
上記では「perror」を使って、エラー内容を標準エラー出力に表示しています。このようにして、エラーが発生した場合に原因を把握することができます。