Будет ли приведенная программа сохранять данные в структуре? - C (СИ)
Формулировка задачи:
Если я запущу программу и внесу какие-либо изменения в структуру (например, DATA[0].year=1769), то при следующем запуске в программе сохранится мое изменение (т.е. DATA[0].year будет по-прежнему равна 1769) или все снесется?
Массивы структур пытаюсь передать в функцию при помощи указателей. В функции изменяю элементы структур. Но программа их не запоминает (или, возможно, переписывает их заново). Может быть, дело в том, что функция не возвращает изменения структур обратно?
В чем именно моя ошибка? Как заставить структуру запоминать значения, внесенные в функции?
Структуры
Кусок функции
Кусь от main'а
struct data
{------};
struct cars
{------};void registration(struct data *DATA,struct cars *CARS,int N) // регистрация (0)
{
int i=0, p=0;
while((p==0)&&(i!=N))
{
.......
printf("\nYEAR");
printf("\n>:");
scanf("%d",&(*DATA).year);
........
printf("\nbrand of car");
printf("\n>:");
scanf("%s",&(*CARS).brand);
........
i++;
}
}int main()
{
int N=20;
struct data DATA[N];
struct cars CARS[N];
registration(DATA,CARS,N);
}Решение задачи: «Будет ли приведенная программа сохранять данные в структуре?»
textual
Листинг программы
scanf("%d",&(*DATA).year);
Объяснение кода листинга программы
В данном коде происходит следующее:
- Вводится переменная
DATAтипа указатель на структуру. - Происходит попытка чтения значения года из стандартного ввода с помощью функции
scanf. - Введенное значение сохраняется в поле
yearструктуры, на которую указывает переменнаяDATA.