я пытаюсь создать функцию, которая возвращает указатель на структуру здесь код:с функция, возвращающая указатель на структуру
структура:
struct Nia{
char NIA[6];
};
функция:
struct Nia * prueba(){
struct Nia *nia = malloc(sizeof(struct Nia)*2);
strcpy(nia[0].NIA,"11111\0");
strcpy(nia[1].NIA,"11112\0");
return nia;
}
Основная функция: (не печатает ничего, но он должен напечатать 11111)
int main(int argc, char** argv) {
struct Nia *nia = prueba();
printf("%s\n",nia[0].NIA);
return (EXIT_SUCCESS);
}
где проблема? Я думаю, что я правильно выполняю указатели на структуры, не так ли?
он фактически возвращает ошибку сегментации.
благодарит заранее!
nia [0] .NIA или вы имеете в виду nia-> NIA [0]? – Michi
Это работает в моей системе. Наличие явного '\ 0' в строке необычно [и _not_ рекомендуется], но не _not_' UB'. 'Strcpy' остановится на _it_, хотя исходная строка выглядит так:' '11111 \ 0 \ 0" ', поэтому будет скопировано только 5 символов + EOS. –
Здесь тоже работает, и никаких жалоб от [valgrind] (см. http://valgrind.org). – dbush