首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getchar() !=‘’和getchar() =‘’

getchar() !=‘’和getchar() =‘’
EN

Stack Overflow用户
提问于 2019-12-26 17:55:31
回答 3查看 223关注 0票数 1

我很难理解getchar() != ' 'getchar() = ' '在我的代码中所做的事情。为什么需要对立面。用户可以在名名和最后名之间、名之前和姓之后输入额外的空格。

代码语言:javascript
复制
#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;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-26 18:16:29

在这个代码片段中

代码语言:javascript
复制
scanf(" %c", &initial);
// printf("%c\n", initial); <== remove this statement
while ((c = getchar()) != ' ')
    ;

读取名字的第一个字母,跳过其他字母。

这个回路

代码语言:javascript
复制
while ((c = getchar()) == ' ')
    ;

跳过名名和名名之间的空格。

这个回路

代码语言:javascript
复制
do {
    putchar(c);
} while ((c = getchar()) != '\n' && c != ' ');

输出第二个名称的所有字母。

最后,在完整的第二名之后输出名字的第一个字母。

所以如果你输入了

代码语言:javascript
复制
Nick     Fisher

那么输出应该是

代码语言:javascript
复制
Fisher, N.

考虑到您应该删除该语句。

代码语言:javascript
复制
printf("%c\n", initial);

这是一项多余的声明。

票数 2
EN

Stack Overflow用户

发布于 2019-12-26 18:45:23

关于:

代码语言:javascript
复制
while ((c = getchar()) != ' ')
    ;

while ((c = getchar()) == ' ')
    ;

第一个while()循环使用第一个名称的其余部分

第二个while()循环使用名字和姓氏之间的空格。

票数 0
EN

Stack Overflow用户

发布于 2021-01-21 18:05:52

使用字符作为初始字符,然后将大量字符写入其中,难道没有问题吗?我认为您使用未分配的内存作为名称。

第一个printf("%c\n", initial);应该生成输入的第一个字符的输出。

哇哦..。

输入:

尼克·费舍尔

输出:

N

Fisher,N.

或者:

Fisher,N.

或者:

由于禁止内存访问而导致程序崩溃

问候安德烈

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59491794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档