Вы можете использовать strncpy.
FYI:
char field [ max ];
while (...) {
mystruct[j]->str = field;
Две проблемы с этим: (1) каждая структура в вашем массиве будет в конечном итоге указывать на одну и ту же строку, котораябудет иметь значение последней проверенной вами вещи, (2) они будут указывать на переменную в стеке, поэтому, когда эта функция вернется, они будут уничтожены.Это не проявляется здесь явно (например, ваша программа не взрывается), потому что функция оказывается «главной», но если вы переместили ее в отдельную подпрограмму и вызвали ее для разбора строки, вы получите обратно мусор.
mystruct не обязательно должно быть указателем на указатель.Для одномерного массива просто выделите блок N * sizeof *myarray
для элементов N.
Распространенная идиома C при работе со структурами - это использование typedef
, поэтому вам не нужно постоянно вводить struct foo
,Например:
typedef struct {
int x, y;
} point;
Теперь вместо того, чтобы набирать struct point pt
, вы можете просто сказать point pt
.