70,037
社区成员
发帖
与我相关
我的任务
分享题目要求如图

我写的代码:
#include <stdio.h>
#define WORDNUM 100
void revWordorder(char *pa, char *pb);
int main()
{
char stra[WORDNUM*20], strb[WORDNUM*20];
gets(stra); // 输入不超过100个单词,以空格间隔 //scanf("[^\n]", stra);
revWordorder(stra,strb);// 逆序放入strb
// printf("%s", strb);
return 0;
}
//函数revWordoder: 将pa指向的字符串中的所有单词,按相反顺序放入pb,单词之间只留一个空格
//例如 pa中为 red blue, 则调用函数后,pb中为blue red
//提示:用指针数组重新组织pa,让每一个数组元素指向一个单词字符串
void revWordorder(char *pa, char *pb)
{
/********** Begin *********/
char *p;
char *pword[100];
int i=0,j=0,k=1;
for(i=0;i<100*20,*(pa+i)!='\0';i++)
{
if(*(pa+i)==' '||*(pa+i)=='\0')
{
*(p+i)='\0';
}
else if(*(pa+i)!=' ')
{
*(p+i)=*(pa+i);
pword[j]=(p+i);
k=1;
while(*(pa+i+1)!=' ' && *(pa+i+1)!='\0')
{
*(pword[j]+k)=*(pa+i+1);
k++;
i++;
}
if(*(pa+i)=='\0')
{
*(pword[j]+k)='\0';
}
j++;
}
}
for(i=j-1;i>=0;i--)
{
printf("%s ",pword[i]);
}
如果输入的单词最后有空格的时候就能正常运行

但是如果hides后面没有空格就会出现乱码

有大神可以帮忙解答一下为什么吗???
数组要初始化为空。