猿问

关于c语言函数

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define da 100
int add(char *p){
        p=(char*)malloc(da*sizeof(char));
        scanf("%100s",p);
        int size=strlen(p);
        if(size==da)
        p=(char*)realloc(p,(da+10)*sizeof(char));
        return 0;
}
int main(void){
        char *p,*t;
        int size,nbytes;
        add(p);
        add(t);
        size=strlen(p);
        nbytes=strlen(t);
        if(size!=nbytes){
        printf("两次数据大小不一\n");
        return -1;
}
        printf("%d\n",size);
        printf("%s\n",p);
        printf("%c\n",p[1]);
        free(p);
        free(t);
        return 0;
}

这些代码编译通过,但是运行时  输入完字符串以后会提示段错误,  如果去掉add函数,把add里的东西都放到main里  程序编译完后正常运行,,这是为啥  指针要怎么传入

kkkbbb
浏览 1422回答 1
1回答
随时随地看视频慕课网APP
我要回答