为什么不能输出且返回值很诡异

为什么不能输出且返回值很诡异

/*输入一个句子,将句子中的每一个单词翻转后输出。例如,输入 Hello World,输出 olleH  dlroW
输入
输入一行,为一个字符串,不超过 100 个字符,单词之间以空格隔开
输出
翻转每一个单词后的字符串,单词之间的空格需与原文一致*/
#include<iostream>
#include<cstring>
#include<string.h>
using namespace std;
int main()
{
    char str[100001];
    int str2[100001],str3[100001];
    memset(str, '0', sizeof(str));
    memset(str2, '0', sizeof(str2));
    memset(str3, '0', sizeof(str3));
    cin.getline(str, sizeof(str));
    int n = strlen(str);
    int j = 0, k = 0;
    int p,q;
    if (str[0] != ' ') {
        j += 1;
    }
    for (int i = 1; i < n-1; i++) {
        if (str[i] != ' ' && str[i - 1] == ' '){
            str2[j] = i;
            j++;
        }

        if (str[i] != ' ' && str[i + 1] == ' ')  {
            str3[k] = i;
            k++;
        }
        if (str[n - 1] != 0) {
            k += 1;
        }
    }
    for (int x = 0; x < j; x++) {
        p = str2[x], q = str3[x];
        while(str2[x] < str3[x]) {

            int temp = 0;
            temp = str[p];
            str[p] = str[q];
            str[q] = temp;
            p++;
            q--;
        }
}
    for (int i = 0; i < n; i++) {
        cout << str[i];
    }


}

memset(str, '0', sizeof(str));
改成
memset(str,0, sizeof(str));
后面两行一样