ungetc 函数

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   int i;
   char ch;
   FILE *fp;
   FILE *zp;
   long last;

   if ((fp = fopen ("ceshi.red", "r+")) == NULL)
   {
      printf ("打开文件失败\n");
      exit (1);
   }
   if (( zp= fopen ("shuchu.red","w+")) == NULL)
   {
      printf ("打开文件失败\n");
      exit (1);
   }
   while((ch = getc (fp))&& ch != 'a')
   {
      putc (ch,zp);
      printf ("1次\n");
   }
   last = 0;
   fseek (fp, 0L, SEEK_END);
   while( ch != 'h')
   {
      ch = getc (zp);
      ungetc (ch, fp);
      printf ("next\n");
   }
   printf ("\n");
   fclose (fp);
   fclose (zp);   
   return 0;
}


                                                  

以上代码可以无视。。。。。。。。。。。。 

书上关于ungetc函数的内容只是一笔带过,还是不太明白ungetc的功能,难道只是将字符放回输入流?

这时注意到如果一个C实现允许将一行里的多个字符放回输入流,那么输入函数
就会以与放回时相反的顺序来读入。
                                                  
沉思片刻写出一开始的代码,在文件中放置一行字母,程序从文件中读取开头几个
字符,每读入一个字母输出到屏幕,然后再停止读取,再将字母返回到文件末尾。
程序最后失败了,发现一个BUG,程序没有实现将屏幕中输出返回。

然后写出文章开始的代码,将文件A里开头的几个字母输出到另一个文件B,再将文件B里的
字母用ungetc返回到文件A,失败。(为什么要这么复杂? 我只想知道ungetc的
功能,仅此而已)。

我又想出一个办法,是不是可以直接把字符返回到ungetc输入流?会溢出吗?

你可能感兴趣的:(c,函数,输入,输出,字母,ungetc)