我想把大写的第一个字母写成大写字母,但我最终改变整个字符串。任何帮助!
{
//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");
}
答案 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
值。这意味着它将处理(例如)制表符后的单词开头,并且提供的语言环境设置正确,它会将(例如)é
转换为É
。