gets()和getc()之间有什么区别?

时间:2015-01-04 10:22:37

标签: c string.h

我尝试在char ch[20]中输入一个字符串,我想按下空格键然后它会停止输入变量。但只要我没有按回车键,gets()功能就会输入。只要不按空格字符,我怎么才能输入?

1 个答案:

答案 0 :(得分:1)

gets()不再是标准,它可能会导致缓冲区溢出,因此您应该使用fgets()按顺序读取直到行尾。为了通过char读取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;
}