#include<stdio.h>
void re(char *a[],int i);
int main()
{
int i=0,count=0;
char *a[80];
while((scanf("%s",&a[i])!=EOF)&&getchar()!='\n')
{
i++;
}
re(a,i);
return 0;
}
void re(char *a[],int i)
{
for(; i>0; i--)
{
printf("%s ",a[i]);
}
printf("%s",a[0]);
}
还请大家多多指教,最好是有自己设置的函数。
char *a[80],只是定义了80个char*而已。这个char*你得给他们设定指向的空间,才有可能接收你输入的字符串啊
代码修改如下:
#include<stdio.h>
void re(char *a[],int i);
int main()
{
int i=0,count=0;
char *a[80];
a[0] = (char*)malloc(100); //100这个根据你的需要来定
while((scanf("%s",a[i])!=EOF)&&getchar()!='\n')
{
i++;
a[i] = (char*)malloc(100); //100这个根据你的需要来定
}
re(a,i);
return 0;
}
void re(char *a[],int i)
{
for(; i>0; i--)
{
printf("%s ",a[i-1]); //这里是i-1
}
printf("%s",a[0]);
}
字符串翻转的最短代码实现
char *strrev(char *str)
{
char *p1, *p2;
if (! str || ! *str)
return str;
for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2)
{
*p1 ^= *p2;
*p2 ^= *p1;
*p1 ^= *p2;
}
return str;
}