機能
- キーボードからの入力を、Enter入力まで待つ。
- Enter入力で待ちを解除して、以降は呼ばれる度に1文字ずつ入力された順に返す
例
ソースコード
#include <stdio.h> int main(void) { int c; while (1) { c = getchar(); printf("getchar:%c\n", c); } }
実行内容
- キーボードから「uio」と入力後、Enterキーを押す。
実行結果
uio getchar:u getchar:i getchar:o getchar:
補足
- 実行結果は、Enterキーの入力後に表示された。
- Enterキー入力後は、呼ばれるたびに1文字ずつ返している。
異常終了
getchar()が異常終了した時、それまでに読み出されていない文字があってもEOFのみが返される。
ソースコード
#include <stdio.h> int main(void) { int c, ns, nt, nl; ns = nt = nl = 0; while ((c = getchar()) != EOF) { printf("getchar:%c, %d\n", c, c); if (c == '\n') ++nl; /* 改行 */ if (c == '\t') ++nt; /* タブ */ if (c == ' ') ++ns; /* スペース */ if (c == EOF) break; } printf("getchar:%c, %d\n", c, c); /* 印字 */ printf("Line:%d, Tab:%d, Space:%d", nl, nt, ns); }
実行内容
- 「fdsa」入力後、Enter入力(正常終了)
- 「fdsa」入力後、Ctrl+C入力(異常終了)
実行結果
fdsa getchar:f, 102 getchar:d, 100 getchar:s, 115 getchar:a, 97 getchar: , 10 fdsagetchar:, -1 Line:1, Tab:0, Space:0