Грубо говоря, я бы сказал, что проблема здесь:
ptrNum = (struct match**)malloc(size*sizeof(struct match*));
Что вам действительно нужно, так это достаточно памяти для size
числа struct match
, а не size
количества указателей.Затем вы хотите индексировать в это пространство.
По сути, вы должны сделать что-то вроде
struct match* ptrNum = malloc(size*sizeof(struct match));
Это даст вам блок памяти для size
числа структур и даст вамуказатель на первый.Вы можете использовать сокращенную запись «массива» для индексации в этой памяти, поэтому match[0]
дает вам структуру в позиции 0 в «массиве», а match[j]
дает запись в j -й позиции.
Также обратите внимание, что match[j]
возвращает вам реальную память, поэтому вы не захотите использовать обозначение указателя:
strcpy(ptrNum[j].menNum, temp);