将字符串中每个单词的第一个字母大写为s

时间:2015-02-01 11:24:56

标签: c

我想把大写的第一个字母写成大写字母,但我最终改变整个字符串。任何帮助!

{
   //Prompt for the name
   char *s  = GetString(); /* some function that returns a string */

   //capitalize
   for(int i = 0,n = strlen(s);i < n;i++)
   {
      printf("%c",toupper(s[0]));
   }
   printf("\n");
}

1 个答案:

答案 0 :(得分:6)

以下内容如何:

void
capitalise(char *s)
{
     int start = 1;
     for (; *s; s++)
     {
          if (start)
              *s = toupper(*s);
          start = isspace(*s);
     }
}

当您将s传递给strlen时,我认为它实际上是char *string是一些奇怪的typedef你还没有告诉了我们。

注意我使用toupper()isspace()而不是直接查看char值。这意味着它将处理(例如)制表符后的单词开头,并且提供的语言环境设置正确,它会将(例如)é转换为É