標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
ISO C |
両方 |
#include <stdio.h>
int getc(FILE *stream);
int getchar(void);
単一文字を現行の stream 位置から読み取り、stream 位置を次の文字へ進めます。getchar() 関数は、getc(stdin) と同じです。
getc() 関数と fgetc() 関数は同じです。ただし、getc() および getchar() は、かなり効率の良いマクロの形式で 提供されます。パフォーマンスのために、関数形式または fgetc() 形式ではなく マクロ形式を使用することをお勧めします。デフォルト解釈で、stdio.h は、これらの関数のマクロ版を提供します。
getc() および はgetchar() は、type=record または type=blocked を使用してオープンしたファイルではサポートされません。
getc() および getchar() には、書き込みの直後の読み取りや 読み取りの直後の書き込みについて、すべての読み取り操作と同じ 制限があります。書き込みと後続の読み取りの間には、介入フラッシュまたは位置変更が 必要です。読み取りと後続の書き込みの間でも、EOF に達していない限り、介入フラッシュまたは位置変更が必要です。
アプリケーションがマルチスレッド化されていない場合、_ALL_SOURCE_NO_THREADS フィーチャー・テスト・マクロを設定すると、この関数のインライン・バージョンを使用できるため、アプリケーションのパフォーマンス が向上します。
getc() および getchar() は、読み取られた文字を戻します。
EOF 戻り値は、エラーまたは EOF 条件を示します。読み取りエラーが発生すると、エラー標識が設定されます。EOF が検出されると、EOF 標識が設定されます。
ferror() または feof() を使用すると、エラーまたは EOF 条件の いずれが発生したかを判別することができます。EOF に達するのは、データの最後のバイトを超えて読み取ろうとした場合だけです。 データの最後のバイトまで (最後のバイトを含む) 読み取ると、EOF 標識はオンになりません。
⁄* CELEBG02
This example gets a line of input from the stdin stream.
You can also use getc(stdin) instead of &getchar. in the for
statement to get a line of input from stdin.
*⁄
#include <stdio.h>
#define LINE 80
int main(void)
{
char buffer[LINE+1];
int i;
int ch;
printf( "Please enter string¥n" );
⁄* Keep reading until either:
1. the length of LINE is exceeded or
2. the input character is EOF or
3. the input character is a new-line character
*⁄
for ( i = 0; ( i < LINE ) && (( ch = getchar()) != EOF) &&
( ch !='¥n' ); ++i )
buffer[i] = ch;
buffer[i] = '¥0'; ⁄* a string should always end with '¥0' ! *⁄
printf( "The string is %s¥n", buffer );
}
Please enter string
hello world
The string is hello world