本文目錄一覽:
C語言 為什麼輸出如此奇怪?
這是因為緩衝區的回車符導致的,每次scanf讀取字符後會留下一個回車在緩衝區,while循環會把這個回車讀取給grade,那麼就會觸發switch的default了
在switch塊後面跟一句rewind(stdin);把緩衝區清空就好了
switch(gread)
{
……………;
}
rewind(stdin); //清空緩衝區
或者在輸入格式附後加一個空格吸收回車符
scanf(“%c “,grade) //%c後面加個空格,就可以吸收回車,空格TAB這類空白字符
C語言有什麼優點什麼缺點?有什麼特別之處
c語言的優點就是它的性能極佳,其它編程語言幾乎沒有它的性能,因此它被用為linux操作系統設計語言。
c語言的缺點是太靈活,沒有垃圾回收,代碼不好編寫。
c語言特別之處就是它的指針和結構體,這兩個東西的存在讓c語言變得異常強大,很多複雜的業務設計,都可以通過它們兩個來實現,也可以說,只有掌握了指針和結構體,你才算入門c語言。
C語言的一些奇怪的表現,求高人指點。
先解釋為什麼沒辦法輸入name。
執行這條scanf(“%d”,p-number);
之後通過屏幕輸入的內容實際為一個整數+一個換行符,
兒scanf只讀取了一個整數,而換行符依舊存在緩衝區中。
gets函數會讀取字符知道遇到換行符,對於當前的情況來說,其第一個字符就是換行符,所以,它只讀取一個換行符。gets函數在執行完讀取操作之後,會將換行符轉換為\0,這也就是我們為什麼看不到內容的原因。
insert修改的方法:在scanf函數調用之後添加一個情況緩存的操作:
fflush(stdin);
這樣insert就可以工作了。
原創文章,作者:YHPJ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/134189.html