解答網友問題005

2021-06-29 08:24:22 字數 883 閱讀 7577

各位前輩,我的問題是,當我除錯下面的

c程式的時候,有乙個不懂的地方在於:

右邊輸入了

i am a student^z(ctrl+z)

,但是當

whilie

迴圈中的

c=getchar()

在讀完了

c=t(

最後乙個字元

t)之後,

getchar

就不繼續讀取了,即

getchar

不繼續讀取

^z了,也即

while

迴圈不退出,這是怎麼回事。請各位大神解答,謝謝。。

#include

#include

int getline(char *s, char lim){

int i, c;

i = 0;

while (--lim > 0 && (c = getchar()) != eof && c != '\n')

網友問題鏈結

首先,不知道你怎麼會突然發現這個問題,只要你正常輸入文字,不會出現這種問題。

其次,我簡單的談一下為什麼會這樣。

使用getchar函式,會將你通過鍵盤輸入的內容讀入緩衝區,只有當你按下回車的時候,getchar函式才會從緩衝區內乙個乙個的讀取字元。一直讀到ff或者asicc為26時,才會認為已經讀取完了,然後等待使用者再繼續輸入。

你輸入的(ctrl+z)的asicc正好是26,所以,它會重新接收使用者輸入。

你可以做一下測試,當你輸入abc(ctrl+z)def後,它只會讀取到(ctrl+z)為止,然後它就認為它已經全部讀完了。

再或者,當你輸入abc(ctrl+x)def 時,它即使讀到(ctrl+x)也不會停止。它不會認為它已經讀取完畢,然後還會繼續讀。

解答網友問題002

include define n 3 struct student int main void input struct student stu struct student max struct student stu void print struct student stud 問 我是乙個初學...

解答網友shell問題一例20140702

解答思想 我們學習shell的最好方法就是參看系統的標桿指令碼及幫助的example。下面是網絡卡啟動指令碼的有關這位問題的指令碼樣例。很明顯上述中括號字元比較等號兩邊有空格。所以上述的問題答案就不言而喻了。root oldboy cat oldboytest.sh bin sh stra aa s...

解答網友shell問題一例20140702

解答思想 我們學習shell的最好方法就是參看系統的標桿指令碼及幫助的example。下面是網絡卡啟動指令碼的有關這位問題的指令碼樣例。很明顯上述中括號字元比較等號兩邊有空格。所以上述的問題答案就不言而喻了。root oldboy cat oldboytest.sh bin sh stra aa s...