Saturday, September 1, 2018

C - 入力と出力

入力とは、プログラムにデータを入力することです。 入力は、ファイルの形式またはコマンドラインから与えることができます。 Cプログラミングでは、指定された入力を読み込み、要件に応じてプログラムに供給するための組込み関数を提供しています。

出力とは、画面、プリンタ、または任意のファイルにデータを表示することを意味します。 Cプログラミングでは、コンピュータ画面上にデータを出力するだけでなく、テキストまたはバイナリファイルに保存するための組み込み関数を提供しています。


標準ファイル
Cプログラミングは、すべてのデバイスをファイルとして扱います。 したがって、ディスプレイなどのデバイスはファイルと同じ方法でアドレス指定され、キーボードや画面へのアクセスを提供するプログラムが実行されると、次の3つのファイルが自動的に開きます。
Standard FileFile PointerDevice
Standard inputstdinKeyboard
Standard outputstdoutScreen
Standard errorstderrYour 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キーを押すと、プログラムは1つの文字だけを読み込み、次のように表示します
$./a.out
Enter a value : this is test
You entered: t


gets()とputs()関数
char * gets(char * s)関数は、sで指されたバッファにstdinから改行を終えるか、EOF(End of File)まで行を読み込みます。
int puts(const char * s)関数は、文字列 's'と 'a'を改行してstdoutに書き出します。
#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から入力を読み込み、指定されたフォーマットに従って入力をスキャンします。
int printf(const char * format、...)関数は、出力を標準出力ストリームstdoutに書き込み、指定されたフォーマットに従って出力を生成します。
書式は単純な定数文字列にすることができますが、%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 integer"のような有効な入力を与えなければなりません。 "string string"または "integer integer"を指定すると、間違った入力とみなされます。 次に、文字列を読み込んでいる間に、scanf()は空白に遭遇するとすぐに読み込みを中止するので、 "this is test"はscanf()の3つの文字列です。


No comments:

Post a Comment

Interfaces and their protocol stacks

インタフェースとそのプロトコルスタック 主要なネットワーク要素に精通した後、これら要素間のインタフェースをよりよく知る時期が来ています。 インタフェースは、MME、SGWおよびPGWが他のネットワーク要素(例えば、HSSまたはPCRF)と協働することを可能にする。 それらの...