во время выполнения кода, я получил "обнаружение разрушения стека" - прервано после того, как указатель вернулся из функции (которая работает правильно - это распределить структуру и инициировать ее)
// global putside the main:
typedef struct {int id; int flight; int chairs;}request,*Prequest;
//calling from main look like:
Prequest p1 = (Prequest)convert_from_buffer_to_struct(buffer);
//the function :
Prequest convert_from_buffer_to_struct(char buffer[]) {
printf("\nbuffer is:%s",buffer);
char sid[ID_LONG],sflight[FLIGHT_LONG],schairs[CHAIRS_LONG];
int id, chairs, flight;
Prequest p = (Prequest) malloc(sizeof(request));
if(p == NULL){ printf("\n in converting :struct allocation faild\n");exit(-1);}
strcpy(sid,&buffer[0]);
id= atoi(sid);
p->id= id;
strcpy(sflight,&buffer[ ID_LONG + SPACE_LONG ]);
flight= atoi(sflight);
p->flight=flight;
strcpy(schairs,&buffer[ID_LONG + SPACE_LONG + FLIGHT_LONG +SPACE_LONG]);
chairs= atoi(schairs);
p->chairs=chairs;
return p;
}
Я проверял функцию много разпомещая printf после каждой строки, чтобы показать каждый результат, это работает очень, но ошибка, которую я получаю после того, как указатель возвращается к главному.Так что же вы ожидаете, что два указателя:
p (возвращенный из функции) и p1 (определенный в главном), почему они привели к разрушению стека?!