帮忙讲讲错误的原因
#include <string.h>
#include <malloc.h>
char *zifu(int x,char y[70]);
void main()
{
char a[70]={0};
char *b;
b = (char *)malloc(70);
int i;
scanf( "%s ",a);
i=strlen(a);
b=zifu(i,a);
//puts(zifu(i,a));
printf( "%s\n ",b);
printf( "%s\n ",b+i+1);
}
char *zifu(int x,char y[70])
{
char *z = NULL;
//z= y;
//z = (char *)malloc(20);
int j;
for (j = 0;j < x;j++)
{
(z+j) = (y+x-j-1);//这里为什么不可以?
}
for (j = 0; j < x; j++)
{
z[j] = y[x-j-1];
}
z[j] = 0;// '\0 ';
return(z);
}
[解决办法]
首先,z没有分配空间,其次是指针内容赋值不时指针赋值
char *zifu(int x,char y[70])
{
int j;
char *z;
z = (char *)malloc(20);
for (j = 0;j < x;j++)
{
*(z+j) = *(y+x-j-1);//这里为什么不可以?
}
for (j = 0; j < x; j++)
{
z[j] = y[x-j-1];
}
z[j] = 0;// '\0 ';
return(z);
}