ungetc

[機能]

  入力した文字をストリームへ返し,ファイル終端インジケータをクリアします.ストリームは読み出しモードでオープンされていなければなりません.読み出し処理を行わないで ungetc 関数を 2 回続けて呼び出すと,結果は保証されません.成功すると返した文字を,失敗すると EOF を返します.

[形式]
#include <stdio.h>

int ungetc(int c, FILE *stream)
	c      : 返す文字
	stream : FILE 構造体へのポインタ		
[使用例]

  1. 続けて入力された数字と文字を分離します
    #include <stdio.h>
    #include <ctype.h>
    
    int main()
    {
    	int ch;
    	int num = 0;
    	char name[20];
    
    	printf("番号と名前(ローマ字)を続けて入力してください ");
    /*
    		 数字の処理
    */
    	while (((ch = getchar()) != EOF) && isdigit(ch))
    		num = 10 * num + (ch - '0');
    /*
    		 1文字をストリームへ戻す
    */
    	if (ch != EOF)
    		ungetc(ch, stdin);
    /*
    		 文字の処理
    */
    	scanf("%s", name);
    /*
    		 出力
    */
    	printf("番号 %d 名前 %s\n", num, name);
    
    	return 0;
    }
    			
    (出力)
    番号と名前(ローマ字)を続けて入力してください 100Suganuma
    番号 100 名前 Suganuma			
[参照]

getc, getchar, fgetc

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引