基于我现在的理解,getchar()在字符串输入时使用,作用就是用一个空格来存储输入完字符串之后多余的换行符。
那么对于字符串输入的两种形式:
1.用scanf输入
scanf输入时,若遇到空格或者换行则默认输入结束,不会给将换行符也当作本次输入,而是会对下次输入造成影响;
2.gets输入
用gets输入字符串时,遇到换行则可以将换行一并吃掉,给换行在该次输入中留出位置。不会使其对下一次输入造成影响;
例题的话可以看杭电1048这道题,仔细体会这两种输入方式的不同;
#include<string.h>
int main(){
char a[10], b[10000], c[10];
while(scanf("%s", a)!=EOF){
getchar();//因为是scanf输入之后,所以加上getchar();
if(!strcmp(a,"ENDOFINPUT")) break;
gets(b) ;//这个输入完之后便不用再加;
gets(c);
for(int i = 0; i < strlen(b); i ++){
if(b[i]>='A'&&b[i]<='E') b[i]+=21;
else if(b[i]>'E'&&b[i]<='Z') b[i]-=5;
}
puts(b);
}
return 0;
}