Инициализация массива строк в C

#arrays #c #string #structure

#массивы #c #строка #структура

Вопрос:

Итак, я в основном пытаюсь назначить свою структуру строками 0, чтобы позже я мог изменить некоторые значения, но я получаю предупреждение «strcpy делает указатель из целого числа без приведения», и код не работает, как я могу это исправить?

моя структура такова

 struct node{ char ID[3]; char Name[40]; char Code[3]; };  

и вот моя функция

 void initialiseArray(struct node* arr){ int i; for(i = 0; i lt; capacity; i  ){  strcpy(arr[i].ID[3], "0");  strcpy(arr[i].Name[40], "0");  strcpy(arr[i].Code[3], "0");  } }  

Комментарии:

1. Почему вы пишете индекс для char массивов при вызове strcpy ? Особенно тот, который находится за пределами дозволенного?

Ответ №1:

arr[i].ID[3] в определении функции должно быть arr[i].ID . То же самое касается двух других полей. arr[i].ID[3] является [несуществующим] символом строки, а не самой строкой.