Передача массива структуры в функцию - C (СИ)
Формулировка задачи:
Добрый вечер! У меня такая проблема. Необходимо создать функцию, которая "обнуляет" все значения в полях структуры. Структура такая:
Прототип функции:
Объявление массива структуры и массива указателей на неё:
Вызов функции в main е:
Сама функция:
На строку, где производится присвоение "пустых" значений полям структуры компилятор "ругается" Lvalue required.
Пробовал не создавать массив указателей, а передавать параметры таким образом: erasedata(a,SIZE,n);
Результат тот же, только в строке вызова функции добавляется предупреждение: suspicious pointer conversion.
Подскажите пожалуйста, где я ошибаюсь? Как правильно передать массив структуры в функцию?
Листинг программы
- #include<stdio.h>
- #include<conio.h>
- #define SIZE 30
- typedef struct
- {
- char family[255];
- char name[255];
- char books[255];
- char hobby[255];
- int mark[5];
- int group[5];
- } TStudent;
Листинг программы
- void erasedata(TStudent*[],int,int);
Листинг программы
- TStudent a[SIZE],*p[SIZE];
- for (i=0;i<=29;i++)
- {
- p[i]=&a[i];
- }
Листинг программы
- erasedata(p,SIZE,m)
Листинг программы
- void erasedata (TStudent* p[], int size, int n)
- {
- FILE *f;
- int i;
- (p[n])->family="";(p[n])->name="";(p[n])->books="";(p[n])->hobby="";
- (p[n])->mark=0;(p[n])->group=0;
- f=fopen("filezk.dat","w");
- fseek(f,n*sizeof(TStudent),SEEK_SET);
- fwrite(p,sizeof(TStudent),1,f);
- fclose(f);
- }
Решение задачи: «Передача массива структуры в функцию»
textual
Листинг программы
- (p[n])->family[0] = '\0';
Объяснение кода листинга программы
В данном коде выполняется следующая последовательность действий:
- Переменная
n
инициализируется значением 0. - Указатель
p
указывает на начало массива структур. - (p[n])->family[0] - это доступ к элементу массива структур по индексу
n
, который содержит указатель на массив строк. - Значение '\0' присваивается элементу массива, на который указывает (p[n])->family[0].
- Значение '\0' является специальным символом, который используется для обозначения конца строки в C.
- Таким образом, в результате выполнения данного кода, в массиве структур будет установлен указатель на пустую строку (которая будет иметь длину 0) для определенного элемента массива структур.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д