读书人

帮忙讲讲异常的原因

发布时间: 2012-02-11 09:51:35 作者: rapoo

帮忙讲讲错误的原因
#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);
}

读书人网 >C语言

热点推荐