C++ C++;TitleCase char*函数返回“;CCCCC";在每个Google C++;试验

C++ C++;TitleCase char*函数返回“;CCCCC";在每个Google C++;试验,c++,arrays,pointers,C++,Arrays,Pointers,我试图创建一个char*toTitleCase(char*text)函数,使文本中的每个单词都以大写字母开头 这是我目前的代码: char*toTitleCase(char*text) { char*arr=新字符[strlen(text)+1]; 对于(int i=0;*(text+i)!='\0';i++) arr[i]=*(文本+i); //示例:arr现在是“salt.ce mai faciccc” 对于(int i=0;arr[i]!='\0';i++) { //如果第一个字母不是大写

我试图创建一个
char*toTitleCase(char*text)
函数,使文本中的每个单词都以大写字母开头

这是我目前的代码:

char*toTitleCase(char*text)
{
char*arr=新字符[strlen(text)+1];
对于(int i=0;*(text+i)!='\0';i++)
arr[i]=*(文本+i);
//示例:arr现在是“salt.ce mai faciccc”
对于(int i=0;arr[i]!='\0';i++)
{
//如果第一个字母不是大写字母,请将其大写。
如果(i==0&&(arr[i]>=97&&arr[i]=97&&arr[i+1]
我特别分配了文本的长度+1

这是您的提示-文本的长度是多少

更改此项:

        for (int i = 0; *(text + i) != '\0'; i++)
            arr[i] = *(text + i);
为此:

        for (int i = 0; *(text + i) != '\0'; i++)
            printf("%c", *(text + i));
它会回答你的问题


换句话说,您没有用空字符正确终止输入字符串。

delete[]arr;
将永远不会执行(这很好)。发生错误的原因是您没有在原始c字符串数组的末尾提供终止的
'\0'
字符。能否更明确地说明错误?我不明白“在原始c字符串数组的末尾”是什么意思?这里请参阅:在C++中为什么不使用STD::String?它会更适合作为注释,但我不能“适合”。正确地说…非常感谢,@Goodshibration!是的,我完全忘记了!我刚刚连续两天都在想着这个小家伙,今天我终于认输了,只是因为我忘了在最后一个元素上分配空值。