標準ライブラリ関数 : 標準入出力関数
標準入出力関数には(C言語プログラミング)で説明した printf() や scanf() の他にも 下のように 1文字専用の入出力関数と 1行専用の入出力関数が用意されている。
標準入力から文字入力 | getchar 関数 |
標準出力から文字出力 | putchar 関数 |
標準入力から文字列入力 | gets 関数 |
標準出力から文字列出力 | puts 関数 |
標準入力から書式付き入力 | scanf 関数 |
標準出力から書式付き出力 | printf 関数 |
標準入力関数(参考)
getchar() | int getchar(void); | 標準入力(キーボード)からの入力値を「EOF」まで1文字づつ取得します。エラー時は「EOF」を返します。 |
gets() | char *gets(char *str); | 標準入力(キーボード)からの入力値を「EOF」※1まで1行づつ取得して、その文字列の先頭アドレスを引数のchar型ポインタ(*str)に渡すと共に戻り値としても返します。エラー時は「EOF」を返します。 但し現在では読み込む長さを指定できる「fgets()」の使用が推奨されています。 |
fgets() | char *fgets(const char *str, int n, FILE *stream); | 「*stream」で示されるストリーム※2から「n-1」文字を取得し「\0」を付加して、その文字列の先頭アドレスを引数のchar型ポインタ(*str)に渡すと共に戻り値としても返します。 |
scanf() | int scanf(char *format,…) ; | 標準入力(キーボード)からの入力値を書式指定した文字列として取得します。 第2引数以降は書式指定文字列※3の変換指定子の数だけ変数を指定します。 戻り値は成功時には入力データの数を返し、失敗時はEOFを返します。 |
標準出力関数(参考)
fputc() | int fputc(int c, FILE *stream); | キャラクタ(ASCIIコード)c をストリーム※2に出力します。 |
putc() | int putc(int c, FILE *stream); | 「fputc」と同機能のマクロです。 |
putchar() | int putchar(int c); | キャラクタ(ASCIIコード)c を標準出力(画面出力)します。 |
fputs() | int fputs(const char *str, FILE *stream); | 文字列 s をストリーム※1に出力します。 |
puts() | int puts(const char *str); | 文字列 s を標準出力(画面出力)します。 |
fprintf() | int fprintf(FILE *stream, const char *format,…); | 書式指定文字列※2をストリームに出力します。 第2引数以降は出力元となる変数を変換指定子の数だけ指定します。 |
printf() | int printf(const char *format,…); | 書式指定文字列を標準出力(画面出力)します。 第2引数以降は出力元となる変数を変換指定子の数だけ指定します。 |
例題1:
キーボードから「Ctrl+Z」を入力することによりループを終了させることができます。
入力した数値を加算、「Ctrl+Z」を入力すると、集計を出力
#include <stdio.h> void main(void) { int n; int sum = 0; printf("整数を入力して下さい\t"); while (scanf("%d", &n) != EOF) { // …「Ctrl+Z が入力されるまで」という意味 sum = sum + n; } printf("sum = %d\n", sum); fflush(stdin); getchar(); }
例題2:
「Ctrl+Z」を押されるまで、文字列を入力し、入力した文字列のスペースの箇所で、改行して表示する。
/* a6-1-3.c */ #include <stdio.h> int main(void) { char str[256]; int i; // puts("文字列を入力してください。(終了条件:Ctrl+Z)"); while (gets(str) != NULL) //gets(str); { puts("入力文字列をスペースで改行して表示します。"); for (i = 0; str[i] != '\0'; i++) { /* スペースで改行 */ if (str[i] == ' ') putchar('\n'); /* スペース以外はそのまま表示 */ else { putchar(str[i]); } } putchar('\n'); } return 0; }