C语言 <stdio.h> ungetc() 函数

  • 描述

    C库函数int ungetc(int char, FILE *stream)将字符char(unsigned char)压入指定的流,以便该字符可用于下一个读取操作。
  • 声明

    以下是ungetc()函数的声明。
    
    int ungetc(int char, FILE *stream)
    
    参数
    • char-这就是要写的字符。这是作为它的int提升传递的。
    • stream-这是指向标识输入流的FILE对象的指针。
  • 返回值

    如果成功,它将返回被推回的字符,否则,将返回EOF并且流保持不变。
    示例
    以下示例显示ungetc()函数的用法-
    
    #include <stdio.h> 
    
    int main () {
       FILE *fp;
       int c;
       char buffer [256];
    
       fp = fopen("file.txt", "r");
       if( fp == NULL ) {
          perror("Error in opening file");
          return(-1);
       }
       while(!feof(fp)) {
          c = getc (fp);
          /* replace ! with + */
          if( c == '!' ) {
             ungetc ('+', fp);
          } else {
             ungetc(c, fp);
          }
          fgets(buffer, 255, fp);
          fputs(buffer, stdout);
       }
       return(0);
    }
    
    让我们假设,我们有一个文本文件file.txt,其中包含以下数据。该文件将用作示例程序的输入-
    
    this is tutorials point
    !c standard library
    !library functions and macros
    
    现在,让我们编译并运行上面的程序,它将产生以下结果-
    
    this is tutorials point
    +c standard library
    +library functions and macros