我试图在 char 数组的中间添加一个空格。不确定如何正确移动它

I am attempting to add a whitespace to the middle of char array. Unsure of how to move it properly

我正在检查一个数组的句子结尾,然后确保在句子结尾后有一个 space。我正在尝试将所有数组 1 向右移动以为白色 space 腾出空间。 userPara[] 只是用户输入的字符数组。我不能使用字符串,但可以使用字符串 class

void add_whitespace(char userPara[])
{
    int len = strlen(userPara);
    int newlen = len + 1;
    char temp1;
    char temp2;
    char whitespace = ' ';
    for (int i = 0; i < newlen; i++) {
        if (userPara[i-1] == '.' || userPara[i-1] == '?' || userPara[i-1] == 
            '!' && userPara[i] != ' ') {
            temp1 = userPara[i];
            userPara[i] = whitespace;
            for (int j = i; j < newlen; j++) {
                temp2 = userPara[j+1];
                userPara[j+1] = temp1;
                temp1 = userPara[j+2];
                userPara[j+2] = temp2;
                cout << userPara << endl; //This is for testing
            }
         }
     }
}

似乎只是将第一个 [j+1] 元素向右移动,直到该元素从字符串中移出

因为在你的内部 for 中你向右移动了 userPara 的两个元素,你应该将计数器增加 2(j+=2 而不是 j++)。 一个适合您的示例如下:

for (int i = 0; i < n; i++) {
    if(userPara [i] == '.')
    {
        temp1 = userPara [i];
        userPara [i] = ' ';
         for (int j = i+1; j < n; j+=2)
         {
            temp2 = userPara [j];
            userPara [j] = temp1;
            temp1 = userPara [j+1];
            userPara [j+1] = temp2;
         }
    break;    
    }

}

正如评论中所讨论的那样,请注意这种方法可能存在关于这种盲目增加数组的问题。