我尝试在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