プログラミング論 第十回 整数・浮動小数点数・文字・文字列 の入出力 本日の内容 文字・文字列の入出力を行う – scanf関数と入力の変換仕様 これで先週までの復習 ensyu21.cを見てみましょう。 文字の入出力を行う 次のプログラムを実行してみましょう //ensyu22.c 一文字の入出力 #include <stdio.h> int main(void) { int ch; ch = getchar(); putchar(ch); return 0; } キーボードから入力された 一文字を,文字コードに変換 して整数型変数に代入します。 文字の入出力を行う 次のプログラムを実行してみましょう //ensyu22.c 一文字の入出力 #include <stdio.h> int main(void) { int ch; ch = getchar(); 整数型変数に保存された数値を putchar(ch); 文字コードで解釈して画面に表示 します。 return 0; } 文字の入出力を行う putcharでは,次のように直接文字や文字コードの指定ができます。 //ensyu22.c 一文字の入出力 #include <stdio.h> 文字の場合は’ ‘で囲んで与えます。 ‘\n’として改行することもできます。 int main(void) 文字コードは整数値で与えます。 { 16進数のコードで与えたいときは, int ch; 0x41と入力します(文字Aの場合)。 } // ch = getchar(); putchar( ‘A’); putchar( 65 ); return 0; ensyu22.cを訂正して動作確認してください 一文字の入出力を行う -演習 ensyu23.cは,一文字の入出力をscanfを 用いて行うものである。 空欄に適切な処理を書き入れ,プログラ ムを完成させなさい。 文字列の入出力を行う 次のプログラムの動作を確認しましょう。 //ensyu24.c 文字列の入出力を行う #include <stdio.h> int main(void) { char ss[80]; gets(ss); puts(ss); return 0; } 文字列変数です。 最大80文字まで 保存可能です。 文字列の入出力を行う 次のプログラムの動作を確認しましょう。 //ensyu24.c 文字列の入出力を行う #include <stdio.h> int main(void) { char ss[80]; gets(ss); puts(ss); return 0; } キーボードから文字列を 入力する関数です。 文字列を保存する配列名 を与えます。 文字列の入出力を行う 次のプログラムの動作を確認しましょう。 //ensyu24.c 文字列の入出力を行う #include <stdio.h> int main(void) { char ss[80]; gets(ss); puts(ss); return 0; } 文字列を出力する関数です。 文字列変数(配列名)を指定します。 “ABC”のように直接文字列を指定する こともできます。 演習 ensyu24.cのプログラムにおいて, puts(ss); と同じ働きをするように,この処 理をprintfで置き換えてください。 文字列の終端について 文字列は,終わりを指定しなければ,どこまでを 正しい文字列データとして表示すればよいのか分 かりません。 文字列を入力したとき,その終端には「文字列終 端マーク」が自動的に挿入されます。 文字列終端マークのことを「NULL文字」といいま す。 通常は「数値の0」です。 「数値の0」では,通常の数値変数の意味なのか, 終端マークの意味なのか分かりにくいので,’\0’ と特殊表現することもあります。 演習-文字列終端マーク ensyu25.cは,文字列変数に初期値として ”hamamoto kazuhiko”という文字列が与えら れているプログラムです。 このまま実行すると, hamamoto kazuhiko と表示されます。 5文字目に「数値の0」を代入した場合の出力を 確認してください。 同様に,「特殊文字’\0’」を代入した場合の出 力を確認してください。 scanfによる文字列の入力 //ensyu26.c scanfを用いた文字列の入力 #include <stdio.h> int main(void) { char ss[80]; scanf("%s", ss); puts(ss); return 0; } 文字列の変換仕様 は%sとなります。 配列変数の場合は,&が必 要ありません。 詳しくは,後期に学習しま す。 scanfによる文字列の入力 ensyu26.cにおいて, hamamoto kazuhiko と入力してみましょう。 どのように出力さましたか? hamamoto のみの出力・・・? scanf(“%s”, …); では,スペースは文字列終端マーク として判断されるので注意が必要です。 演習 - scanfとgetsの違い ensyu27.cを実行してみましょう。 入力は hama kazu でお願いします。 gets()とscanf()とで,2回入力します。 それぞれの場合において,一文字ずつ文 字コード(十進数)を出力させるプログラ ムです。 hamaとkazuの間の「スペース」の扱いの 違いを確認してください。
© Copyright 2024 ExpyDoc