首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮忙讲讲异常的原因

2012-02-11 
帮忙讲讲错误的原因#include string.h#includemalloc.hchar*zifu(intx,chary[70])voidmain(){chara[7

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

热点排行