возврат указателя на массив символов из функции в другом файле, отличном от основного - PullRequest
0 голосов
/ 14 июля 2011

Я не могу вернуть указатель на массив символов из другого файла, кроме основной функции.Это всегда говорит "ошибка сегментации".Но если я напишу функцию в том же файле, что и 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;

}

Я использую NetBeans в Mac OS для программирования на C.

Может кто-нибудь подскажет, чтоэто проблема?Или я здесь ошибаюсь?

1 Ответ

4 голосов
/ 14 июля 2011

Функция retchararray переполняет ваш массив.Вы используете больше памяти, чем зарезервировали.Это происходит в *(str+len+1) = '\0' и вызывает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...