要求用户输入他们的姓名并在C中输出他们的姓名缩写

时间:2017-09-01 20:10:13

标签: c cs50

我只是想通过承认我是一个完整的编码初学者来开始这一点,而且这对我来说并不是直观的。

我尝试做的是编写一个简单的程序,让用户输入其全名,并输出其首字母。我试图遵循的逻辑是,由于C中的字符串只是数组中的字符,因此应该是初始字符的字符将出现在' \ 0'之后。值。

我不确定我的问题是逻辑问题还是将该逻辑转换为工作语法,所以任何帮助都会受到赞赏。

以下是完整的代码:

# include <stdio.h>
#include <cs50.h>
#include <string.h>

int main (void)
{

printf ("Please insert your name. \n");
string name = get_string();
//printf ("Your name is %s\n", name);
int x = 0;
char c = name [x];
while (c != '\0')
    {
        x++;
    }
    printf ("%c/n", c);

}

我知道这完全是一团糟,但我再次试图弄清楚退出是否最好,所以任何帮助都会受到赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:5)

  

我想要遵循的逻辑是,由于C中的字符串只是数组中的字符,因此应该是初始字符的字符将出现在'\ 0'值之后。

在C中,\0表示字符串的结尾,所以你绝对不想寻找那个值。

让我们考虑逻辑。有人的缩写可能是:

  • 字符串中的第一个字符
  • 空格后的第一个字符

- 即“Albus Percival Wulfric Brian Dumbledore” - &gt; “APWBD” -

所以你要循环遍历字符串,寻找:

  • 空格,在这种情况下,您需要抓取下一个字母,或
  • 字符串的结尾('\0'),在这种情况下,您将要停止。

需要注意的边缘情况:

  • 如果字符串为空会怎么样?
  • 如果字符串以空格结尾会发生什么? (如果您确保获得格式正确的输入,则可能不会发生这种情况)

请不要气馁 - 我们都是初学者一次。这种想法并不总是直截了当,但答案最终会到来。祝好运!