我不能从主函数以外的其他文件返回指向字符数组的指针。它总是说“分段错误”。但是,如果我在与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编程。
有些人可以告诉我这是什么问题吗?或者我在这里犯了一些错误?
答案 0 :(得分:4)
函数retchararray溢出你的数组。您使用的内存多于预留的内存。
这发生在*(str+len+1) = '\0'
中并导致段错误。