我是C的新手,我正在尝试编写一个输入名称的程序,如john smith,并返回大写的首字母JS。我尝试过使用for循环和while循环,但是我的代码似乎没有增加,每当我运行它时,它返回的只是第一个首字母。我在网上搜索过这个问题,但没有一个解决方案适合我。我究竟做错了什么?提前谢谢。
以下是代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main(void) {
// initialize variables
char name[61];
int i = 0;
// ask for user input
printf("Please enter your name: ");
scanf("%s", name);
// print first initial
printf("%c", toupper(name[0]));
// print the next ones
while (name[i] != '\0') {
if (name[i] == ' ') {
i++;
printf("%c", toupper(name[i+1]));
}
i++; // does not increment
}
return 0;
}
答案 0 :(得分:1)
scanf("%s", name)
只读取名字。您需要scanf("%s %s", first_name, last_name)
答案 1 :(得分:1)
scanf()
读取输入,直到遇到空格。因此,写全名将在名字和姓氏之间留出空格。这将停止scanf()
,它只会读取名字。
要使用空格读取两个输入,请更好地使用fgets()
。 fgets()
读取字符串,直到遇到换行符\n
。
fgets(name, 61, stdin);