我检查了句末数组,然后确保有句结束后的空间。我试图给所有的数组1向右移动,以使房间的空白。 userPara[]
仅仅是一个用户输入的字符数组。我不能使用字符串,但是可以使用string类
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;
}
}
正如在评论中讨论请注意,这种方法可能有关于阵列的这种盲目增加的问题。