我嘗試在char ch[20]
中輸入一個字符串,我想當我按下空格鍵時,它會停下來將輸入輸入到變量中。但只要我不按回車鍵,gets()
函數就會輸入。只要我不按空格字符,我怎樣才能接受輸入?gets()和getc()之間有什麼區別?
-1
A
回答
1
gets()
不再是一個標準,它可能會導致緩衝區溢出,所以您應該使用fgets()
以便讀取直到行尾。爲了通過字符讀取char,直到遇到空間,可以使用getc()
,如下所示。
檢查下面的代碼:
#include <stdio.h>
int main(void) {
int i=0;
char ch;
char a[20];
while(((ch = getc(stdin)) != ' ') && i<19)
a[i++] = ch;
a[i] = '\0';
printf("%s\n",a);
return 0;
}
+0
我得到了我的答案:) – Mastan 2015-01-04 13:11:06
+0
當執行達到'a [i] ='\ 0';'時,'i'可以是20,從而導致未定義的行爲 – 2015-01-04 13:29:37
相關問題
- 1. gets()和getch()有什麼區別?
- 2. gets和readline有什麼區別?
- 3. gets,gets.chomp和gets.chomp之間的區別!?
- 4. 「層」和「層」之間有什麼區別?
- 5. Tableau和QlikView之間有什麼區別
- 6. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 7. @Entity和@embeddable之間有什麼區別
- 8. ContentObservable和DataSetObservable之間有什麼區別?
- 9. touchmove和gesturechange之間有什麼區別?
- 10. :notification.flags和notification.defaults之間有什麼區別?
- 11. proc和lambda之間有什麼區別?
- 12. :: after和after之間有什麼區別?
- 13. read()和io.read()之間有什麼區別?
- 14. Request()和Request.Form()之間有什麼區別?
- 15. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 16. getA()和this.getA()之間有什麼區別?
- 17. (int)和intval()之間有什麼區別?
- 18. set_value和= pandas之間有什麼區別
- 19. * zoom和zoom之間有什麼區別?
- 20. {0}和「」之間有什麼區別?
- 21. typedef和using之間有什麼區別?
- 22. 「」和「'之間有什麼區別?
- 23. STDIN和tty之間有什麼區別?
- 24. +和%之間有什麼區別?
- 25. sysfs_create_file()和sysfs_create_group()之間有什麼區別?
- 26. Lazy.Force()和Lazy.Value之間有什麼區別
- 27. -existingObjectWithID:error:和-objectWithID之間有什麼區別?
- 28. ReleaseFloatArrayElements和DeleteLocalRef之間有什麼區別
- 29. AutomationProperties.AutomationID和AutomationProperties.Name之間有什麼區別?
- 30. _id:ObjectID和String之間有什麼區別?
歡迎SO。您的問題標題與您提問的問題不同。另外請儘量給你的問題的文字表達更加關心,有編輯按鈕來幫助你更好地格式化的東西。 – 2015-01-04 10:28:25
另外,你不應該使用'gets',它已經從C標準中刪除,因爲它本質上是不安全的。改爲使用'fgets'。 – 2015-01-04 10:31:17