e知識「e-chishiki.com」では、インドでの著名なIT著者、IT教育者、eセキュリティーの大家により作成された様々な種類のプログラミング言語に関する技術的なコンテンツを知識情報データーベースとして提供します。
オンライン書籍; インド式プログラミングバイブル C言語入門 (上)
第 1 章 : C言語入門 始めに(書籍のプレビュー)
インド式プログラミングバイブル C言語入門
この記事は、2008年4月から発売の「インド式プログラミングバイブル C言語入門 (上)」より掲載しました。書籍の情報は、こちらをご覧ください。
入力を受け付ける
前述のプログラムでは、p、n、rの値が、それぞれ1000、3、8.5であるとしました。プログラムを実行するたびに、同じ値が単利として得られます。他の組み合わせの値を使って単利を計算したい場合には、プログラムの中の対応する場所を変更して、再度コンパイルし、実行しなければなりません。つまり、このプログラムは、プログラム自体を変更せずに、どんな値からでも、柔軟に単利計算ができるようになっていません。それに、このプログラムのEXEファイルを配った場合、プログラムの変更方法がわからない人が使う可能性もあります。そこで、プログラムには、どんな値でも対応できる柔軟性を持たせた方が良いでしょう。
プログラムにそのような機能を持たせるには、実行中に、ユーザにキーボードからp、n、rの値を入力させるようにします。この機能は、scanf( )と言う関数を使って、実現できます。この関数は、printf( )と対になる関数です。printf( )は画面に値を出力し、scanf( )はキーボードから入力される値を受け付けます。具体的には、次のプログラムのようになります。
/* 単利の計算 */
/* Author gekay Date 25/05/2005 */
# include <stdio.h>
void main( )
{
int p, n ;
float r, si ;
printf ( "Enter values of p, n, r" ) ;
scanf ( "%d %d %f", &p, &n, &r ) ;
si = p * n * r / 100 ;
printf ( "%f" , si ) ;
}
1つめのprintf( )は、画面に「Enter values of p, n, r(p,n,rの値を入力してください)」というメッセージを表示します。この例では、printf( )に式は含まれていません。つまり、printf( )における式の使用は、必須ではありません。
scanf( )関数内の変数の前に付けられているアンドマーク(&)は、必須であることに注意してください。この&は、「アドレス演算子」です。アドレス演算子は、メモリ上の変数が使用する位置番号を提供します。&aと記述することにより、ユーザがキーボードから入力した値を、メモリ上のどこに格納するべきかscanf( )に指示しています。&演算子の働きの詳細については、第5章で詳しく述べます。
scanf( )に渡す値は、空白かタブ、改行で区切らなければならないことに、注意してください。空白は、スペース キーで、タブはTABキーで、改行はEnterキーで入力できます。以下が入力例です。
例:3つの値を、空白で区切る場合
1000 5 15.5
例:3つの値を、タブで区切る場合
1000 5 15.5
例:3つの値を、改行で区切る場合
1000
5
15.5
この例で、大体理解できたと思います。もう少し具体的に、プログラム例で、見てみましょう。
/* Just for fun. Author: Bozo */
# include <stdio.h>
void main( )
{
int num ;
printf ( "Enter a number" ) ;
scanf ( "%d", &num ) ;
printf ( "Now I am letting you on a secret..." ) ;
printf ( "You have just entered the number %d", num ) ;
}



