从main之外的其他文件中的函数返回指向字符数组的指针

时间:2011-07-14 19:07:34

标签: c

我不能从主函数以外的其他文件返回指向字符数组的指针。它总是说“分段错误”。但是,如果我在与main相同的文件中编写函数,则没有问题。

/* this is in mainfunc.c file*/
int main()
{


    char ch[5]={'a','b','c','d','\0'};
    char *res=retchararray(ch);
    printf("%s\n",res);/*I get segmentation fault only when I use this printf*/

}

/* this function is in other file newfile.c */

char *retchararray( char *p){

    char *str;
    str=p;
    unsigned int len=strlen(p);

    *(str+len)='e';
    *(str+len+1)='\0';

    return str;

}

我在Mac OS上使用netbeans进行C编程。

有些人可以告诉我这是什么问题吗?或者我在这里犯了一些错误?

1 个答案:

答案 0 :(得分:4)

函数retchararray溢出你的数组。您使用的内存多于预留的内存。 这发生在*(str+len+1) = '\0'中并导致段错误。