gpt4 book ai didi

c - 返回每个单词大写的第一个字母

转载 作者:行者123 更新时间:2023-11-30 21:49:11 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来获取字符串,并返回每个大写单词的第一个字母。

例如:“天空中的太阳”=> TSITS

这是我的代码。经过一番修改后,我设法能够编译;但似乎它只打印字符串的空格

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <cs50.h> // typedef char *string; string GetString();

int main(void)
{
string s = GetString();

for (int i=0;i<strlen(s);i++){
if(i == s[0] || s[i-1] == ' ' ){
s[i] = toupper(s[i]);
printf("%c",i);
i++;
}
}
}

这是怎么回事?

最佳答案

不要使用i == s[0](这可能是i == 0),而是简单地跟踪前一个字符。

char previous = ' ';

// Don't recalculate the length each time, just look for the null character
// for (int i=0;i<strlen(s);i++){
for (; *s; s++){
if(previous == ' ' && isalpha((unsigned char) *s)) {
printf("%c",toupper((unsigned char) *s));
// or
putchar(toupper((unsigned char) *s));
}
previous = *s;
}

关于c - 返回每个单词大写的第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38987079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com