★文字列入力関数★


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を使えば、数値や文字、文字列など様々な情報が扱えます。

ただ、「文字」や「文字列」には専用の命令(関数)があることも知っておいてください。


ブラウザの戻るボタンで戻ってください。