我在理解getchar()!=''和getchar()=''在我的代码中正在做什么时遇到了麻烦。为什么需要对立。用户可以在名字和姓氏之间以及名字和姓氏之后输入多余的空格。
#include <stdio.h>
int main(void) {
char c, initial;
printf("Enter a first and last name: ");
scanf(" %c", &initial);
printf("%c\n", initial);
while ((c = getchar()) != ' ')
;
while ((c = getchar()) == ' ')
;
do {
putchar(c);
} while ((c = getchar()) != '\n' && c != ' ');
printf(", %c.\n", initial);
return 0;
}
scanf(" %c", &initial);
printf("%c\n", initial);
while ((c = getchar()) != ' ')
;
名字的第一个字母被读取,其他字母被跳过。
此循环
while ((c = getchar()) == ' ') ;
跳过名字和名字之间的空格。
此循环
do { putchar(c); } while ((c = getchar()) != '\n' && c != ' ');
输出第二个名字的所有字母。
最后,全名之后输出名字的第一个字母。因此,例如,您输入的是
Nick Fisher
那么输出应该是
Fisher, N.
while ((c = getchar()) != ' ')
;
while ((c = getchar()) == ' ')
;
第一个while()
循环使用了其余的名字
第二个while()
循环消耗了名字和姓氏之间的空格。