Передача массива структуры в функцию - 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) для определенного элемента массива структур.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д