一个关于串赋值的错误...
如题自己看书上例子的时候试着敲了一下代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define OVERFLOW -1
#define OK 1
typedef struct{
char *ch=NULL;
int len;
}HString;
int StrAssign(HString *s,char src[]){
char *dp=NULL,*sp=src;
int len=strlen(src);
dp=(char*)malloc(sizeof(char)*len);
if(!dp)
return OVERFLOW;
if(s->ch)
free(s->ch);
s->ch=dp;
if(*sp)
*dp++=*sp++;
return OK;
}
int main(){
char src[255]="asdghwajkgnh";
HString *s;
printf("执行字符串赋值\n");
if(StrAssign(s,src)==OK)
printf("%s,执行完毕\n",s->ch);
else if(StrAssign(s,src)==OVERFLOW)
printf("字符串空间溢出\n");
return 0;
}
结果调试的时候出现了“Program received signal SIGSEGV,Segmentation fault.”这个....
有没有大佬指点一下是咋回事啊..