getchar()和EOF
(c=getchar())!=E0F
這個式子很熟悉,但一直都沒有去理解它的原理。所以今天在網(wǎng)上一頓搜索,基本理解了這些問題。
1.getchar()函數(shù):
這個函數(shù)是以行為單位進(jìn)行存儲的。停止的條件是接收到回車'\n'和結(jié)束符EOF。它的返回值有正負(fù)數(shù),當(dāng)有輸入時候一般返回正直,除非遇到停止的消息時候,才會返回-1,即EOF;
while((c = getchar()) != EOF){
putchar(c);}
在這里,getchar和putchar應(yīng)該每次讀入和輸出一個字符,但是在終端上我們卻發(fā)現(xiàn)情況并非如此,而是等待輸入一行完成時才有輸出。造成這種情況的原因是由于輸入在停止前,操作系統(tǒng)的驅(qū)動不會通知getchar函數(shù),控制權(quán)一直在getchar函數(shù)上,getchar函數(shù)這時處于阻塞狀態(tài),直到停止符出現(xiàn),控制權(quán)才會交給putchar函數(shù),完成輸出。
2.EOF
EOF作為換行符,可以通知輸入ctl+D來實現(xiàn)EOF的輸入。在getchar函數(shù)中,通過這種操作可以結(jié)束它的阻塞。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
總結(jié)
以上是生活随笔為你收集整理的getchar()和EOF的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法导论-概率发生器
- 下一篇: Silverlight/Windows8