今天使用getchar是感到十分迷惑,上百度查了一下。如果在回车之前不是输入了一个字符,而是输入了一个字符串,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.下面以两个程序实例来说明。
#include<stdio.h>
struct student {
char name;
};
int main() {
student *p = (student*) malloc(sizeof(student));
p->name= getchar();
char c = getchar();
printf("%c,%c",p->name,c);
return 0;
}
若在程序运行后,输入字符cyuyan后按空格,则输出结果为cy.
#include<stdio.h>
struct student {
char name;
};
int main() {
student *p = (student*) malloc(sizeof(student));
p->name= getchar();
char c = getchar();
printf("%c,%ce",p->name,c);
return 0;
}
即把printf("%c,%c",p->name,c)改为
printf("%c,%ce",p->name,c),输入c,则输出为也就是说 回车也被放入getchar接收,放到键盘缓冲区,等待输出。