为什么我不能打印名字的首字母

  • 本文关键字:打印 不能 cs50 toupper
  • 更新时间 :
  • 英文 :


我正在尝试编写打印给定名称首字母的代码? 每当我使用"/0"初始化给定字符串的第 i 个字符时,我都会收到错误。我用它来识别第二个单词的首字母?有什么建议可以检测第二个单词并打印第二个单词的首字母吗?此外,我正在尝试编写此代码,以便它忽略任何其他空格:

 #include <stdio.h>
 #include <cs50.h>
 #include <string.h>
 #include <ctype.h>
    int main(void)
    {
          printf ("Enter you Name:");//print name
          string s = get_string(); //get input from user 
          printf("%c", toupper(s[0])); // use placeholder to call the string 
           for (int i=0, n = strlen(s); i < n; i++)
            { 
              if (s[i] == '/0')
               {
                printf("%c", toupper(s[i+1]));  
               }
            }
           printf ("n");
     }

我不确定您的 get_string(( 函数是做什么的,但这符合您的要求。

int main(void)
{
      printf ("Enter you Name:");//print name
      char input[100];
      cin.getline(input, sizeof(input));
      string s(input);
      //get input from user 
      printf("%c", toupper(s[0])); // use placeholder to call the string 
      for (int i=0, n = s.length(); i < n; i++)
        {
          if (isspace(s.at(i)))
           {
            printf("%c", toupper(s[i+1]));  
           }
        }
       printf ("n");
 }

尝试使用 ' ' 而不是 '/0'。

if (s[i] == ' ')

或者,如果您更喜欢 ASCII 代码(空格为 0x20 或 32 作为十进制(:

if (s[i] == 0x20)

如果名称之间只有 1 个空格,您的代码将起作用。 为避免这种情况,条件还应检查下一个字符。如果它不是一个空格,那么它可能是一个"字母":

if (s[i] == 0x20 && s[i+1] != 0x20) {...

请注意,for 循环应该在 i 失败......

相关内容

  • 没有找到相关文章

最新更新