C言語にはscanfやprintf以外にも「文字列」を入力したり表示したりする命令(関数)があります。
まずはgetsとputsを紹介します。
<sample program col028-01>
#include <stdio.h> #define MAX_STRING 10 int main(void) { char str[MAX_STRING]; gets(str); puts(str); return 0; } |
<実行結果>
ABC ←getsの入力 ABC 続行するには何かキーを押してください・・・
getsは「文字列」を入力するための命令(関数)です。
途中に半角空白があっても行の最後(改行)まで読み込みます。
<実行結果>
ABC DEF ←getsの入力 ABC DEF 続行するには何かキーを押してください・・・
配列の大きさを超えて入力するとおかしくなるのはscanfと同じですが、getsでは防ぐ策がありません。
ABCDEFGHIJK ←getsの入力 ABCDEFGHIJK
※ここまで表示された時点で↓のダイアログが表示される。
続行するには何かキーを押してください・・・
putsは「文字列」を表示する専門の命令(関数)です。
気づいたかもしれませんが、printfと違って"\n"と書かなくても表示後に改行してくれます。
後はfgetsとfputsだけ紹介します。
<sample program col028-02>
#include <stdio.h> #define MAX_STRING 10 int main(void) { char str[MAX_STRING]; fgets(str, MAX_STRING, stdin); fputs(str, stdout); return 0; } |
<実行結果>
ABC ←fgetsの入力 ABC続行するには何かキーを押してください・・・
fgetsには3つの情報を渡します。
文字列用配列と最大文字数とstdinです。
最大文字数があるため、配列の大きさを超えて入力しても配列には読み込まれません。
<実行結果>
ABCDEFGHIJ ←fgetsの入力 ABCDEFGHI続行するには何かキーを押してください・・・
stdinは「標準入力」というものを指し、多くの場合キーボードが設定されています。
fputsにもstdoutという「標準出力」を意味する文字がありますが、これも多くの場合ディスプレイを指します。
また、fputsは自動的に改行されていませんね。
scanfやprintfを使えば、数値や文字、文字列など様々な情報が扱えます。
ただ、「文字」や「文字列」には専用の命令(関数)があることも知っておいてください。
ブラウザの戻るボタンで戻ってください。