ungetc()函数的用法

ungetc函数是将输出流中的废弃数据退入流中去。

MSDN是这样定义的

int ungetc(
   int c,
      FILE *stream 
);
Parameters
c Character to be pushed.
stream Pointer to FILE structure.
Return Value
If successful, each of these functions returns the character argument c. If c cannot be pushed back or if no character has been read, the input stream is unchanged and ungetc returns EOF; ungetwc returns WEOF. If stream is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. If execution is allowed to continue,EOF or WEOF is returned and errno is set to EINVAL.


贴出实例代码:代码通过VS2008编译
/*************************************************************/
#include <iostream>
//#pragma  pack(4)
#include <cctype>




int main(int argc,char *argv[])
{
    int ch=0,sum=0;
    while ( ( ch=getchar() )!=EOF&&isdigit(ch) )
    {
        sum*=10;
        ch-='0';
        sum+=ch;
    }
    ungetc(ch,stdin);
    printf("%d\n",sum);
    fflush(stdin);
    system("pause");
    return 0;
}
/*******************************************************************/
输入:12345r
输出:12345

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `ungetc(c, stdin)` 是一个函数,用于将一个字符 `c` 推回到标准输入流 `stdin` 中。在读取字符时,我们可以使用 `getchar()` 函数来从标准输入流中读取字符。如果我们读取到了一个字符,但是后续的处理需要重新把这个字符放回到标准输入流中,这时就可以使用 `ungetc(c, stdin)` 函数。 例如,假设我们需要从标准输入流中读取一个字符,如果读取到的字符是数字,我们希望将其乘以 2,如果是字母,我们希望将其转换为大写字母。代码如下: ```c #include <stdio.h> #include <ctype.h> int main() { int c = getchar(); if (isdigit(c)) { c = (c - '0') * 2 + '0'; } else if (isalpha(c)) { c = toupper(c); } ungetc(c, stdin); return 0; } ``` 在上面的代码中,如果读取到的字符是数字,我们将其乘以 2,并将结果放回到标准输入流中;如果是字母,我们将其转换为大写字母,并将结果放回到标准输入流中。这样,在后续的代码中,我们就可以从标准输入流中继续读取字符了。 ### 回答2: ungetc(c, stdin)是一个函数,用于将字符c放回标准输入流stdin中。它的作用是在读取输入时,将字符放回输入流中,以便后续的输入读取可以再次读取到这个字符。 通常情况下,在使用标准输入流(stdin)读取输入时,读取到的字符会被消耗掉,无法再次读取。但是使用ungetc函数可以将一个字符放回输入流,使得该字符可以再次被读取。 ungetc函数的使用方法是在读取输入后调用,可以将最后一个读取的字符放回输入流,以便下次读取。例如,假设我们从输入流中读取了字符'x',然后调用ungetc('x', stdin),接下来再次读取输入流时就可以再次读到字符'x'。 这个函数非常有用,特别是在输入某个字符后需要回退一次的情况下。使用ungetc函数可以方便地回退一个字符并再次读取,而不需要更加复杂的逻辑。 需要注意的是,ungetc函数只能放回一个字符,并且只能放回最近读取的字符。如果多次调用ungetc函数,只有最后一次调用有效。 总之,ungetc函数是一个非常有用的函数,可以在读取输入时将字符放回输入流,以便后续再次读取。它简化了回退一个字符的操作,提高了程序的灵活性和可读性。 ### 回答3: ungetc(c, stdin)是一个用于将字符c压回输入流stdin中的函数。它的作用是将之前从输入流中读取的字符c退回,使其重新成为下一个读取的字符。 在C语言中,通常是使用getchar()函数从标准输入流stdin中读取一个字符。但是,有时候我们在读取一个字符后,发现读取错了或者不需要使用该字符,这时候就可以使用ungetc()函数将该字符退回到输入流中,以便重新读取。 ungetc(c, stdin)的用法很简单,它的参数c是一个整型值,表示要退回到输入流中的字符。而stdin是一个指向标准输入流的指针。 当我们使用ungetc(c, stdin)函数后,下一次调用getchar()函数就会返回被退回的字符c。这样就可以重新处理该字符,或者将其丢弃。 需要注意的是,ungetc()函数只能将一个字符退回到输入流中,而且只能退回一次。如果多次调用ungetc()函数,只有最后一次的退回有效。 总之,ungetc(c, stdin)函数是一个方便的用于将字符退回到输入流中的函数。它可以在需要重新处理或者丢弃之前读取的字符时使用,提高程序的灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值