6.18.48 ungetc Function
Pushes character back onto stream.
Include
<stdio.h>
Prototype
int ungetc(int c, FILE * stream);
Arguments
c- character to be pushed back
stream- pointer to the open stream
Return Value
Returns the pushed character if successful; otherwise, returns EOF.
Remarks
The pushed back character will be returned by a subsequent read on the stream. If more
than one character is pushed back, they will be returned in the reverse order of their
pushing. A successful call to a file positioning function (fseek,
fsetpos or rewind) cancels any pushed back
characters. Only one character of push back is guaranteed. Multiple calls to
ungetc without an intervening read or file positioning operation
may cause a failure.
Example
#include <stdio.h>
int main(void)
{
FILE * buf;
char y, c;
if ((buf = fopen("afile.txt", "r")) == NULL)
printf("Cannot open afile.txt\n");
else
{
y = fgetc(buf);
while (y != EOF)
{
if (y == 'r')
{
c = ungetc(y, buf);
if (c != EOF)
{
printf("2");
y = fgetc(buf);
}
}
printf("%c", y);
y = fgetc(buf);
}
fclose(buf);
}
}
Example Input
Contents of afile.txt (used as input):
Short
Longer string
Example Output
Sho2rt
Longe2r st2ring
