试图取一个人的全名并在C中返回他们的姓名首字母

时间:2015-12-31 04:30:20

标签: c

我是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;
}

2 个答案:

答案 0 :(得分:1)

scanf("%s", name)只读取名字。您需要scanf("%s %s", first_name, last_name)

之类的内容

答案 1 :(得分:1)

scanf()读取输入,直到遇到空格。因此,写全名将在名字和姓氏之间留出空格。这将停止scanf(),它只会读取名字。

要使用空格读取两个输入,请更好地使用fgets()fgets()读取字符串,直到遇到换行符\n

fgets(name, 61, stdin);