日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言ungetc参数,关于一些C语言标准I/O函数的见解。int ungetc(int ch,FILE *fp)函数...

發布時間:2024/9/30 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)//打開已經存在的文件

{

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);

}

這一個程序輸出結果是第一文件內第一個字符,如文件中內容是abcdefg,則會輸出字符a;

但是如果加入注釋的rewind(p);函數,這個程序會什么也不輸入,原因是什么呢?

自己思考半天得到一些結論,純粹是個人心得,如有不正確請各位幫忙改正,謝謝!

ungetc()函數的作用是講一個輸入ch字符,返回到指定的輸入流fp中,在下次調用標準輸入函數時,會被

再次讀取。如果用ungetc函數返回一個字符到指定輸入文件流,此時文件指針是指向這個字符的,所以在下

次對這個輸入流調用輸入函數時,會輸入這個字符。但是如果在想上面程序那樣在調用rewind函數以后在調

用輸入函數結果就不一樣了,因為調用了rewind函數以后文件指針指向文件開頭處,在用輸入函數時,得到

的是文件指針指向的字符,而此時函數指針并沒有指向那個被換回的字符,改字符不會被輸入,而輸入的只

是文件指針指向的字符(用ungetc函數返回的字符并沒有真正的被輸入到文件中,只是將該字符返回到文件

的緩沖區中,輸入函數都是從緩沖區中獲取數據的);

總結

以上是生活随笔為你收集整理的c语言ungetc参数,关于一些C语言标准I/O函数的见解。int ungetc(int ch,FILE *fp)函数...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。