Передача массива структуры в функцию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый вечер! У меня такая проблема. Необходимо создать функцию, которая "обнуляет" все значения в полях структуры. Структура такая:
#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];
  }
Вызов функции в main е:
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);
}
На строку, где производится присвоение "пустых" значений полям структуры компилятор "ругается" Lvalue required. Пробовал не создавать массив указателей, а передавать параметры таким образом: erasedata(a,SIZE,n); Результат тот же, только в строке вызова функции добавляется предупреждение: suspicious pointer conversion. Подскажите пожалуйста, где я ошибаюсь? Как правильно передать массив структуры в функцию?

Решение задачи: «Передача массива структуры в функцию»

textual
Листинг программы
 (p[n])->family[0] = '\0';

Объяснение кода листинга программы

В данном коде выполняется следующая последовательность действий:

  1. Переменная n инициализируется значением 0.
  2. Указатель p указывает на начало массива структур.
  3. (p[n])->family[0] - это доступ к элементу массива структур по индексу n, который содержит указатель на массив строк.
  4. Значение '\0' присваивается элементу массива, на который указывает (p[n])->family[0].
  5. Значение '\0' является специальным символом, который используется для обозначения конца строки в C.
  6. Таким образом, в результате выполнения данного кода, в массиве структур будет установлен указатель на пустую строку (которая будет иметь длину 0) для определенного элемента массива структур.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы