c语言ungetc参数,关于一些C语言标准I/O函数的见解。int ungetc(int ch,FILE *fp)函数...
以自己試驗的小程序開始吧!
#include
#include
void main(void)
{
FILE *fp;
FILE *p;
int ch,c;
if((fp=fopen("F:\\wangyong.txt","r"))==NULL)//打開已經(jīng)存在的文件
{
printf("error");
exit(1);
}
if((p=fopen("F:\\xiaowen.txt","r"))==NULL)//同上
{
printf("error");
exit(1);
}
while((ch=getc(fp))!=EOF)
{
ungetc(ch,p);//將fp所指向的文件的第一個字符返回給p所指的文件流
}
// rewind(p);
while((c=getc(p))!=EOF)
{
putc(c,stdout);
}
if(fclose(fp)!=0&&fclose(p)!=0)
exit(1);
}
這一個程序輸出結(jié)果是第一文件內(nèi)第一個字符,如文件中內(nèi)容是abcdefg,則會輸出字符a;
但是如果加入注釋的rewind(p);函數(shù),這個程序會什么也不輸入,原因是什么呢?
自己思考半天得到一些結(jié)論,純粹是個人心得,如有不正確請各位幫忙改正,謝謝!
ungetc()函數(shù)的作用是講一個輸入ch字符,返回到指定的輸入流fp中,在下次調(diào)用標(biāo)準(zhǔn)輸入函數(shù)時,會被
再次讀取。如果用ungetc函數(shù)返回一個字符到指定輸入文件流,此時文件指針是指向這個字符的,所以在下
次對這個輸入流調(diào)用輸入函數(shù)時,會輸入這個字符。但是如果在想上面程序那樣在調(diào)用rewind函數(shù)以后在調(diào)
用輸入函數(shù)結(jié)果就不一樣了,因為調(diào)用了rewind函數(shù)以后文件指針指向文件開頭處,在用輸入函數(shù)時,得到
的是文件指針指向的字符,而此時函數(shù)指針并沒有指向那個被換回的字符,改字符不會被輸入,而輸入的只
是文件指針指向的字符(用ungetc函數(shù)返回的字符并沒有真正的被輸入到文件中,只是將該字符返回到文件
的緩沖區(qū)中,輸入函數(shù)都是從緩沖區(qū)中獲取數(shù)據(jù)的);
總結(jié)
以上是生活随笔為你收集整理的c语言ungetc参数,关于一些C语言标准I/O函数的见解。int ungetc(int ch,FILE *fp)函数...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言编程切片stl1005无标题,C语
- 下一篇: 目标指令c语言是什么,什么是C中的目标文