利用getc 和ungetc的实例

#include <stdio.h>
#include <ctype.h>

void main( void )
{
   int ch;
   int result = 0;

   printf( "Enter an integer: " );

   /* Read in and convert number: */
   while( ((ch = getchar()) != EOF) && isdigit( ch ) )
      result = result * 10 + ch - '0';    /* Use digit. */
   if( ch != EOF )
      ungetc( ch, stdin );                /* Put nondigit back. */
   printf( "Number = %d\nNextcharacter in stream = '%c'", 
            result, getchar() );
}
Output
Enter an integer: 521a
Number = 521
Nextcharacter in stream = 'a'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`getc`和`ungetc`是C语言标准库中提供的两个函数,用于从文件中读取字符。 `getc`函数的原型为:`int getc(FILE *stream)`,它从指定的文件流中读取一个字符,并返回其ASCII码值。如果读取成功,则返回该字符的ASCII码值;如果到达文件末尾或读取出错,则返回常量EOF。 `ungetc`函数的原型为:`int ungetc(int c, FILE *stream)`,它将指定的字符c退回到文件流中。如果退回成功,则返回该字符的ASCII码值;如果退回失败,则返回常量EOF。 下面是一个简单的示例程序,演示了如何使用`getc`和`ungetc`函数: ```c #include <stdio.h> int main() { FILE *fp = fopen("test.txt", "r"); if (!fp) { printf("Failed to open file.\n"); return 1; } // 读取文件中的第一个字符 int c = getc(fp); printf("First character: %c\n", c); // 将刚才读取的字符退回到文件流中 ungetc(c, fp); // 再次读取文件中的第一个字符 c = getc(fp); printf("First character again: %c\n", c); fclose(fp); return 0; } ``` 在这个示例程序中,我们首先打开了一个名为“test.txt”的文件,然后使用`getc`函数读取了该文件中的第一个字符,并将其保存在量c中。接着,我们使用`ungetc`函数将量c中保存的字符退回到文件流中。最后,我们再次使用`getc`函数读取文件中的第一个字符,并将其输出到控制台上。 需要注意的是,`ungetc`函数只能将一个字符退回到文件流中。如果尝试将多个字符退回到文件流中,可能会导致不可预知的行为。此外,`ungetc`函数只能将最近读取的字符退回到文件流中,而不能将文件流中的任何其他字符退回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值