以单词为单位倒序输出

qy_hyts 2023-05-11 00:04:22

题目要求如图

我写的代码:

 

#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后面没有空格就会出现乱码

 

有大神可以帮忙解答一下为什么吗??? 

...全文
198 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
flower丶荻 2023-05-11
  • 打赏
  • 举报
回复

数组要初始化为空。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧