我很难理解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;
}发布于 2019-12-26 18:16:29
在这个代码片段中
scanf(" %c", &initial);
// printf("%c\n", initial); <== remove this statement
while ((c = getchar()) != ' ')
;读取名字的第一个字母,跳过其他字母。
这个回路
while ((c = getchar()) == ' ')
;跳过名名和名名之间的空格。
这个回路
do {
putchar(c);
} while ((c = getchar()) != '\n' && c != ' ');输出第二个名称的所有字母。
最后,在完整的第二名之后输出名字的第一个字母。
所以如果你输入了
Nick Fisher那么输出应该是
Fisher, N.考虑到您应该删除该语句。
printf("%c\n", initial);这是一项多余的声明。
发布于 2019-12-26 18:45:23
关于:
while ((c = getchar()) != ' ')
;
while ((c = getchar()) == ' ')
;第一个while()循环使用第一个名称的其余部分
第二个while()循环使用名字和姓氏之间的空格。
发布于 2021-01-21 18:05:52
使用字符作为初始字符,然后将大量字符写入其中,难道没有问题吗?我认为您使用未分配的内存作为名称。
第一个printf("%c\n", initial);应该生成输入的第一个字符的输出。
哇哦..。
输入:
尼克·费舍尔
输出:
N
Fisher,N.
或者:
Fisher,N.
或者:
由于禁止内存访问而导致程序崩溃
问候安德烈
https://stackoverflow.com/questions/59491794
复制相似问题