Использование строк или указателей на строки в структуре - PullRequest
0 голосов
/ 09 июля 2020

Я думаю, что упускаю что-то важное, и я не могу найти ответ. Если я хочу использовать строку в структуре, что лучше использовать массивы символов или указатели на них? Следующий код работает по назначению, но выдает предупреждения. «Предупреждение C4047 'function': 'const char ' отличается по уровням косвенного обращения от 'char () [3]«

при использовании со следующими определение структуры

typedef struct element {
    char name[20];
    char symb[3];
    double wt;
}element;

И следующая процедура для создания элемента

element e;
char name[20];
char symbol[3];
scanf("%s %s %lf", &name, &symbol, &e.wt);
strcpy(&e.name, &name);
strcpy(&e.symb, &symbol);

1 Ответ

0 голосов
/ 09 июля 2020

Проверьте типы данных.

Измените

 strcpy(&e.name, &name);

на

 strcpy(e.name, name);

и

scanf("%s %s %lf", &name, &symbol, &e.wt);

на

scanf("%s %s %lf", name, symbol, &e.wt);

Тем не менее, лучше использовать fgets() для ввода данных пользователем. Если вам нужно использовать scanf(), вы должны проверить успешность вызова scanf(), прежде чем использовать отсканированные значения.

...