序文
ungetc 関数は、後で読み取れるように文字を入力ストリーム (通常はファイル ストリームまたは標準入力ストリーム) にプッシュバックするために使用される C 言語標準ライブラリの関数です。その機能は、入力ストリームの先頭に文字を挿入することです。これにより、次回文字が読み取られるときに、押し戻された文字が最初に読み取られ、その後に後続の文字が読み取られます。
ungetc 関数は通常、文字を読み取った後に期待を満たさない文字を見つけ、後で再処理するために入力ストリームに戻す必要があるなど、特定の状況を処理するために使用されます。その関数プロトタイプは次のとおりです。
int ungetc(int c, FILE *stream);
で:
c はプッシュバックする文字で、通常は整数として渡され、(int) キャストを使用して整数に変換できます。
stream は文字をプッシュバックする入力ストリームで、通常はオープン ファイル ストリームや標準入力ストリーム (stdin) などです。
ungetc 関数の戻り値は、プッシュバックされた文字の整数表現、またはエラーの場合は EOF (通常は -1) です。
以下は、ungetc 関数を使用して文字を入力ストリームにプッシュする方法を示す簡単な例です。
#include <stdio.h>
int main() {
int ch;
// 从标准输入流读取字符
printf("Enter a character: ");
ch = getchar();
// 检查字符是否是小写字母
if (ch >= 'a' && ch <= 'z') {
// 如果是小写字母,则将字符推回到输入流
ungetc(ch, stdin);
printf("You entered a lowercase letter: %c\n", ch);
} else {
printf("You did not enter a lowercase letter.\n");
}
return 0;
}
この例では、ユーザーが小文字を入力すると、プログラムはそれを入力ストリームにプッシュして戻し、その文字を再度読み取り、適切なメッセージを出力します。このように、ungetc 関数を使用すると、ファイル ポインタを移動せずに文字を再読み取ることができます。