69,369
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
void converse(char* str)
{
char *p1 = str;
char *p2 = str + strlen(str) - 1; /*p2指向最后一个字符*/
char ch;
while (ch = *str)
{
if (ch == ' ')
*str = '\0';
++str;
}
while (p2 > p1)
{
if (!*p2)
printf("%s ", p2+1);
--p2;
}
printf("%s\n", p2);
}
int main(int argc, char *argv[])
{
char hh[100];
gets(hh); /*gets(hh);---->会将'\n'转为'\0'*/
converse(hh);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char* converse(char* str);
char hh[100];
gets(hh);
printf("%s", converse(strcat(hh," ")));
getchar();
return 0;
}
char* converse(char* str)
{
int i=0,k=0,j=0,m[100]={0};
char *p[100];
char end[100];
printf("str = %s\n", str);
for(i=0;*(str+i)!='\0';i++)
{
m[j]++;
if( *(str+i) == ' ') //*str改成*(str + i),这样指针才有移动,才会有值
{
p[j] = (char *)malloc(m[j]);
memset(p[j], 0, m[j]); //初始化内存,以免申请的内存本来就不是干净的
for(k=0; k < m[j]-1;k++)
{
*(p[j]+k) = str[i-m[j]+k+1];
}
j++;
}
}
//*str = '\0';
memset(str, 0, 100); //清空str
for(i=j-1; i>=0; i--)
{
strcat(str, p[i]);
strcat(str, " ");
}
return str;
}