int main() {
int l,j = 0;
int tmp = 0;
//存储输入字符串的数组
char arr[100] = "i love beijing.";
//用来存储输出字符串的数组
char arr2[100];
//输入字符串
//gets(arr);
l = strlen(arr);
arr2[l] = '\0';
//一开始的考量是需要一直用到该字符串长度的
//在修改BUG时已经不需要了,也没有去掉
tmp = l;
/*也算是个防伪吧(滑稽)*/
int m = tmp;
//tmp相当于一个我目前读到哪里的指示位,
//直接在循环外赋值以防止循环内出一些奇奇怪怪的问题
while (1) {
for ( ; tmp >= 0; tmp--) {
if (arr[tmp] == ' ') {
break;
}
}
//将以划出“字符段”除空格外按顺序赋值
//若没有 + 1 会将上方循环中检索到的空格输出于单词前方,
//也就导致了最后输出的两个单词之间没有空格。
for (int le = tmp + 1; le < m; le++) {
arr2[j] = arr[le];
j++;
}
m = tmp;
//说真的,这个-1卡了我好长时间。果然熬夜不好。
if (tmp == -1) {
break;
}
//将被忽略的小可爱补上
arr2[j] = ' ';
j++;
//防止下次循环中直接检索到空格,陷入死循环
tmp--;
}
printf("%s", arr2);
return 0;
}