今天在做《c primer plus》的課後習題的時候,有這樣一道題:
編寫乙個程式讀入一行輸入,然後反向列印該行。
您可以把輸入儲存在乙個char陣列中;假定該行不超過255個字元。
回憶一下,您可以使用具有%c說明符的scanf()從輸入中一次讀入乙個字元,
而且當您按下回車鍵時會產生換行字元(\n)。
按照題目要求 我編寫了這樣一段**:
/*編寫乙個程式讀入一行輸入,然後反向列印該行。
您可以把輸入儲存在乙個char陣列中;假定該行不超過255個字元。
回憶一下,您可以使用具有%c說明符的scanf()從輸入中一次讀入乙個字元,
而且當您按下回車鍵時會產生換行字元(\n)。*/
#include int main()
while(i>=0)
printf("\n");
return 0;
}
這段**在當你輸入一串字串的時候是沒有響應的 因為這裡scanf裡確實成功的輸入了值,等於這個判斷條件成為了 當 1或0 != 『\n』時 ,迴圈下列**,所以這個程式完全不能完成**反向輸出,在思考和網上查閱資料並沒有滿意的結果,於是我用putchar函式試了一下改變 迴圈條件:
while( scanf("%c",&ch[i]) == 1 ) 改變為 while( (ch[i] = getchar()) != '\n') 這個程式就可以正確的反向輸出字串了,但是我並不滿意,因為我想用scanf函式輸入的時候也能進行條件判斷,於是我試著再改寫了一下判斷條件:
改變為 while( scanf("%c",&ch[i]), ch[i] != '\n' ) 時,這個程式也可以反向輸出字串,雖然書上寫ch = getchar() 與scanf("%c",&ch)有著相同的效果,但是就這個題而言還是不一樣的,更改後的正確**如下:
#include int main()
while(i>=0)
printf("\n");
return 0;
}
如果我的理解有問題,希望大家能批評指正。
c語言中的getchar 和putchar
getchar 和putchar 函式時字元輸入輸出函式,其返回值都是int 整型。getchar 從鍵盤上輸入乙個字元,函式的返回值是輸入的第乙個字元的ascii碼字元的ascii值,若出錯返回 1,且將使用者輸入的字元回顯到螢幕。注意 1 使用者在按回車之前輸入了不止乙個字元,其他字元會保留在鍵...
C語言中的getchar和putchar詳解
首先給出 the c programming language 這本書中的例子 include int main return 0 這裡主要解釋下為什麼要用int型來接受getchar函式。很多時候,我們會寫這樣的兩行 char c c getchar 這樣就很有可能出現問題。因為getchar函式...
C語言中的getchar和putchar詳解
一 首先給出 the c programming language 這本書中的例子 include int main return 0 這裡主要解釋下為什麼要用int型來接受getchar函式。很多時候,我們會寫這樣的兩行 char c c getchar 這樣就很有可能出現問題。因為getchar...