C言語の入出力マスター:標準関数とファイル操作
入力と出力
入力とは、プログラムにデータを供給することです。入力はファイルまたはコマンドラインから与えられます。Cプログラミングでは、与えられた入力を読み取り、要件に応じてプログラムに供給する組み込み関数セットを提供します。
出力とは、画面、プリンタ、またはファイルにデータを表示することです。Cプログラミングでは、データをコンピュータ画面に出力するだけでなく、テキストやバイナリファイルに保存する組み込み関数セットを提供します。
標準ファイル
Cプログラミングではすべてのデバイスをファイルとして扱います。したがって、ディスプレイなどのデバイスもファイルと同じようにアドレス指定され、プログラム実行時に以下の3つのファイルが自動的に開かれ、キーボードと画面へのアクセスを提供します:
| 標準ファイル | ファイルポインタ | デバイス |
|---|---|---|
| 標準入力 | stdin | キーボード |
| 標準出力 | stdout | 画面 |
| 標準エラー | stderr | 画面 |
ファイルポインタは、読み書きのためにファイルにアクセスする手段です。このセクションでは、画面から値を読み取り、結果を画面に出力する方法を説明します。
getchar()とputchar()関数
int getchar(void)関数は、画面から次の利用可能な文字を読み取り、整数として返します。この関数は一度に1文字のみ読み取ります。画面から複数文字を読み取りたい場合、ループでこのメソッドを使用できます。
int putchar(int c)関数は、渡された文字を画面に出力し、同じ文字を返します。この関数は一度に1文字のみ出力します。画面に複数文字を表示したい場合、ループでこのメソッドを使用できます。例:
#include <stdio.h>
int main() {
int c;
printf("Enter a value :");
c = getchar();
printf("\nYou entered: ");
putchar(c);
return 0;
}
実行すると、テキスト入力を待ちます。テキストを入力してEnterを押すと、プログラムは1文字のみ読み取り、表示します:
$./a.out Enter a value : this is test You entered: t
gets()とputs()関数
char *gets(char *s)関数は、stdinからバッファsが指す場所に、改行またはEOF(End of File)まで1行を読み取ります。
int puts(const char *s)関数は、文字列's'と改行をstdoutに書き込みます。
注意: gets()関数の使用は非推奨です。代わりにfgets()を使用してください。
#include <stdio.h>
int main() {
char str[100];
printf("Enter a value :");
gets(str);
printf("\nYou entered: ");
puts(str);
return 0;
}
実行結果:
$./a.out Enter a value : this is test You entered: this is test
scanf()とprintf()関数
int scanf(const char *format, ...)関数は、標準入力ストリームstdinから入力を読み取り、提供されたformatに従って入力をスキャンします。
int printf(const char *format, ...)関数は、標準出力ストリームstdoutに出力を書き込み、提供されたフォーマットに従って出力を生成します。
formatは単純な定数文字列ですが、%s、%d、%c、%fなどを指定して文字列、整数、文字、浮動小数点数をそれぞれ出力または読み取りできます。要件に基づいて使用できる他の多くのフォーマットオプションがあります。簡単な例で概念を理解しましょう:
#include <stdio.h>
int main() {
char str[100];
int i;
printf("Enter a value :");
scanf("%s %d", str, &i);
printf("\nYou entered: %s %d ", str, i);
return 0;
}
実行結果:
$./a.out Enter a value : seven 7 You entered: seven 7
ここで注意すべき点:scanf()は提供した%sと%dと同じ形式で入力を期待するため、"string integer"のような有効な入力を提供する必要があります。"string string"や"integer integer"を提供すると誤った入力と見なされます。次に、文字列読み取り時にscanf()はスペースに遭遇すると読み取りを停止するため、"this is test"はscanf()にとって3つの文字列です。
C言語
- C# キーワードと識別子:ルール、一覧、ベストプラクティス完全ガイド
- C# 入出力の基礎:ユーザー入力と出力の基本をマスター
- C# クラスとオブジェクト:堅牢な OOP の基礎
- C++入出力完全ガイド:cin/coutの基本から複数入力まで
- C言語入出力(I/O)マスター:scanf()とprintf()徹底解説
- C++ストリームをマスター:cout、cin、cerr、clogの実践ガイド
- C言語の定数とリテラル:型、使い方、ベストプラクティス
- C#の定数とリテラル:型、ルール、ベストプラクティス完全ガイド
- Dラッチ完全マスター:設計、動作原理、フリップフロップとの違い
- Python I/Oとモジュールインポート完全マスター: 実践ガイド
- Java入出力をマスター:表示、読み取り、データフォーマット