要求输入一个句子,将其单词逆序。
例:输入:you are so beautiful 输出:beautiful so are you
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void re_list(char *str,char *re_str[])
{
int i =0,j =0,k=0;
char *tmp[10];
for(i=0; i<10; i++)
{
tmp[i] = (char *)malloc(20);
*tmp[i] = 0;
}
i=0;
while(*(str+i)!='\0')
{
while(*(str+i)!=' '&&*(str+i)!='\0') //将str句子中的单词剥离出来,存储在tmp的指针数组中
{
*(tmp[j]+k) = *(str+i);
k++;
i++;
}
*(tmp[j]+k) = '\0';
if(*(str+i)=='\0')
{
break;
}
i++;
j++;
k = 0;
}
k = 0;
for(i=j; i>=0;i--) //j是单词的数量,将单词反过来存放在re_str中,形成逆序
{
re_str[k] = tmp[i];
k++;
}
}
int main()
{
char str[1024];
char *re_str[10]; //最多允许10个单词
int j = 0;
printf("Please input:");
gets(str);
for(int i=0; i<10; i++)
{
re_str[i] = (char *)malloc(20);
* re_str[i] = 0; //注一定要初始化
}
re_list(str,re_str);
printf("\n");
printf("out:");
for(i=0; i<10; i++)
{
if(* re_str[i]!=0)
{
printf("%s ", re_str[i]);
}
}
printf("\n");
return 0;
}