gets() 和 getc() 有什么区别?
What is the difference between gets() and getc()?
我尝试在 char ch[20]
中输入一个字符串,我希望当我按下 space 键时它会停止将输入输入到变量中。但是只要我不按回车键,gets()
函数就会接受输入。不按space字符怎么输入?
gets()
不再是标准,它可能会导致缓冲区溢出,因此您应该使用 fgets()
以便读取到行尾。为了逐个读取字符直到遇到 space,您可以使用 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] = '[=10=]';
printf("%s\n",a);
return 0;
}
我尝试在 char ch[20]
中输入一个字符串,我希望当我按下 space 键时它会停止将输入输入到变量中。但是只要我不按回车键,gets()
函数就会接受输入。不按space字符怎么输入?
gets()
不再是标准,它可能会导致缓冲区溢出,因此您应该使用 fgets()
以便读取到行尾。为了逐个读取字符直到遇到 space,您可以使用 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] = '[=10=]';
printf("%s\n",a);
return 0;
}