Cprogramming-c-input-output

提供:Dev Guides
移動先:案内検索

C-入力および出力

  • 入力*と言うとき、それはデータをプログラムに送ることを意味します。 入力は、ファイルの形式またはコマンドラインから指定できます。 Cプログラミングには、指定された入力を読み取り、要件に従ってプログラムに入力する組み込み関数のセットが用意されています。
  • 出力*と言うとき、画面、プリンター、または任意のファイルにデータを表示することを意味します。 Cプログラミングには、コンピューター画面にデータを出力したり、テキストまたはバイナリファイルに保存したりするための一連の組み込み関数が用意されています。

標準ファイル

Cプログラミングは、すべてのデバイスをファイルとして扱います。 そのため、ディスプレイなどのデバイスはファイルと同じ方法でアドレス指定され、キーボードと画面へのアクセスを提供するプログラムの実行時に次の3つのファイルが自動的に開きます。

Standard File File Pointer Device
Standard input stdin Keyboard
Standard output stdout Screen
Standard error stderr Your screen

ファイルポインターは、読み取りおよび書き込み目的でファイルにアクセスする手段です。 このセクションでは、画面から値を読み取る方法と、画面に結果を印刷する方法について説明します。

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キーを押すと、プログラムが進行し、単一の文字のみを読み取り、次のように表示します-

$./a.out
Enter a value : this is test
You entered: t

gets()およびputs()関数

*char* gets(char * s)*関数は、終了改行またはEOF(ファイルの終わり)のいずれかになるまで、 *stdin* から *s* が指すバッファーに行を読み取ります。
*int puts(const char* s)*関数は、文字列 's'および 'a'の末尾の改行を *stdout* に書き込みます。

注: gets()関数の使用は非推奨になりましたが、getsの代わりにlink:/c_standard_library/c_function_fgets [fgets()]を使用する必要があります。

#include <stdio.h>
int main( ) {

   char str[100];

   printf( "Enter a value :");
   gets( str );

   printf( "\nYou entered: ");
   puts( str );

   return 0;
}

上記のコードがコンパイルおよび実行されると、テキストの入力を待機します。 あなたがテキストを入力してEnterキーを押すと、プログラムは続行し、最後まで完全な行を読み取り、次のように表示します-

$./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;
}

上記のコードがコンパイルおよび実行されると、テキストの入力を待機します。 あなたがテキストを入力してEnterキーを押すと、プログラムは続行し、入力を読み取り、次のように表示します-

$./a.out
Enter a value : seven 7
You entered: seven 7

ここで、scanf()は、%sおよび%dを指定したのと同じ形式の入力を想定しているため、「文字列整数」などの有効な入力を指定する必要があることに注意してください。 「string string」または「integer integer」を指定すると、誤った入力と見なされます。 第二に、文字列の読み取り中に、scanf()はスペースに遭遇するとすぐに読み取りを停止するため、「this is test」はscanf()の3つの文字列です。