getchar()!=''和getchar()=''

问题描述 投票:0回答:2

我在理解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;
}
c loops scanf getchar putchar
2个回答
1
投票
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.

0
投票
while ((c = getchar()) != ' ') ; while ((c = getchar()) == ' ') ;

第一个while()循环使用了其余的名字

第二个while()循环消耗了名字和姓氏之间的空格。
© www.soinside.com 2019 - 2024. All rights reserved.