Этот синтаксис неправильный (сначала я неправильно прочитал вопрос, потому что они выглядят как объявления функций, а не определения структур):
struct custRec(char[20] name, char[50] address, char[20] city,
char[2] stateAbbreviation, int zipCode, float balance);
struct linkedRec(custRec storedRec, custRec* nextRec, custRec* prevRec);
Вы, вероятно, имели в виду:
typedef struct custRec
{
char name[20];
char address[50];
char city[20];
char stateAbbreviation[2];
int zipCode;
float balance;
} custRec; // Necessary because question is about C, not C++
typedef struct linkedRec
{
custRec storedRec;
custRec *nextRec;
custRec *prevRec;
} linkedRec;
Я отмечаю, что в США аббревиатуры штатов состоят из 2 символов, поэтому вам, вероятно, нужно использовать char state[3]
для разрешения завершающего нуля.
Теперь это синтаксически допустимо. Когда вы копируете данные в поля custRec
, вам нужно быть осторожным, чтобы убедиться, что копирование не выходит за границы. Компилятор не применяет длины.
Вам нужно будет проверить, поэтому внутри функции, что передаваемые вам строки не превышают ожидаемых вами пределов.
Если вы предпочитаете не накладывать ограничений на длины, все члены структуры строк можно преобразовать в char *
, и вы можете динамически распределять память для строк произвольной длины. Но это, вероятно, не очень хорошая идея для аббревиатур штатов США; там вы хотите применить ограничение «2 символа плюс '\0'
».