Cライブラリ関数 -ungetc()
説明
Cライブラリ関数int ungetc(int char, FILE *stream)文字をchar(符号なし文字)を指定されたストリームにプッシュしてstream、それが次に読み取られる文字になるようにします。
宣言
以下は ungetc() 関数の宣言です。
int ungetc(int char, FILE *stream)
引数
- char-- これはプッシュされる文字です。この文字は対応する int 値として渡されます。
- stream-- これは FILE オブジェクトを指すポインタで、この FILE オブジェクトは入力ストリームを識別します。
戻り値
成功した場合はプッシュされた文字を返し、それ以外の場合は EOF を返し、ストリーム stream は変更されません。
例
以下の例は、ungetc() 関数の使用方法を示しています。
例
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
char buffer [256];
fp = fopen("file.txt", "r");
if( fp == NULL )
{
perror(ファイルを開くときにエラーが発生しました);
return(-1);
}
while(!feof(fp))
{
c = getc (fp);
/* ! を + に置き換えます */
if( c == '!' )
{
ungetc ('+', fp);
}
else
{
ungetc(c, fp);
}
fgets(buffer, 255, fp);
fputs(buffer, stdout);
}
return(0);
}
int main ()
{
FILE *fp;
int c;
char buffer [256];
fp = fopen("file.txt", "r");
if( fp == NULL )
{
perror(ファイルを開くときにエラーが発生しました);
return(-1);
}
while(!feof(fp))
{
c = getc (fp);
/* ! を + に置き換えます */
if( c == '!' )
{
ungetc ('+', fp);
}
else
{
ungetc(c, fp);
}
fgets(buffer, 255, fp);
fputs(buffer, stdout);
}
return(0);
}
テキストファイルがあるとしますfile.txt、その内容は次のとおりです。このファイルは例の入力として使用されます。
this is サンプル !c standard library !library functions and macros
上記のプログラムをコンパイルして実行してみましょう。次の結果が得られます。
this is サンプル +c standard library +library functions and macrosその他の拡張
C標準ライブラリ - <stdio.h>