Из функции в заголовочном файле записать данные в структуру - C (СИ)

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

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

Подскажите , что я не так делаю. Надо из функции в заголовочном файле записать данные в структуру. Вот код: Файл main.c
#include<stdio.h>
#include <string.h>
#include "file.h" //Чтение и запись в файл. Функции OUT(int n,struct tele *dan) и IN(int n,char *File,struct tele *dan)
 
#define NK 10 //Количество элементов базы данных
#define File "File.txt" //Тестовый файл для проверки работоспособности функций
 
struct tele
{
int Id;
char Number[10];
char Name[25];
long NumberTele;
float Usp;
};
struct tele *Basa;

void main()
 {
 
char c;
 
 printf("1 - Read File\n");
  printf("2 - Write File\n");
   printf("Esc - Exit\n");
 
 while(1){
 c=getch();
  switch(c)
  {
  case 27:
       exit(1);
         break;
  case '2':
    IN(NK,File,Basa);
       break;
  case '1':
    for(int i = 0; i<NK; i++)
     {
         Basa=(struct tele *)malloc(sizeof(struct tele));
        OUT(Basa[i].Id,Basa[i].Number,Basa[i].Name,Basa[i].NumberTele,Basa[i].Usp);
     }
        break;
  case '3':
    for(int i=0;i<NK;i++)
      printf("%d %s %s %ld %f \n",Basa[i].Id,Basa[i].Number,Basa[i].Name,Basa[i].NumberTele,Basa[i].Usp);
  }
 }

}
Файл File.h
#ifndef FILE_H
 #define FILE_H
 
 OUT(int Id,char *Number,char *Name,long NumberTele,float Usp);
void IN(int n,char *File,struct tele *dan);
 
 #endif
Файл File.c
#include <stdio.h>
#include <conio.h>
#include "file.h"
 
 struct tele
{
int Id;
char Number[10];
char Name[25];
long NumberTele;
float Usp;
};
 
OUT(int Id,char *Number,char *Name,long NumberTele,float Usp)
{
FILE *in;
 
   if((in = fopen("tele.db","r")) == NULL)
    {
        printf("Faila net!!!"); exit(1);
       }
 
     fscanf(in, "%d;%7s;%[^;]s", &Id,Number,Name);
                   fscanf(in, ";%ld;%f;",&NumberTele,&Usp);

}

   IN(int n,char *Fail,struct tele *dann)
{
 FILE *out;
   out = fopen(Fail,"w");
   for( int i = 0 ; i < n ; i++)
    {
   fprintf(out,"%d %s %s %ld %f \n",dann[i].Id,dann[i].Number,dann[i].Name,dann[i].NumberTele,dann[i].Usp);
    }
 fclose(out);
}
Заранее спасибо.

Решение задачи: «Из функции в заголовочном файле записать данные в структуру»

textual
Листинг программы
#include<stdio.h>
#include <string.h>
#include "file.h" //Чтение и запись в файл. Функции OUT(int n,struct tele *dan) и IN(int n,char *File,struct tele *dan)
 
#define NK 10 //Количество элементов базы данных
#define File "File.txt" //Тестовый файл для проверки работоспособности функций
 
struct tele
{
int Id;
char Number[10];
char Name[25];
long NumberTele;
float Usp;
};
 
 
 
void main()
 {
 
char c;
struct tele *Basa[NK];
 printf("1 - Read File\n");
  printf("2 - Write File\n");
   printf("Esc - Exit\n");
 
 while(1){
 c=getch();
  switch(c)
  {
  case 27:
       exit(1);
         break;
  case '2':
    IN(NK,File,Basa);
       break;
  case '1':
    for(int i = 0; i<NK; i++)
     {
         Basa[i]=(struct tele *)malloc(sizeof(struct tele));
        OUT(Basa[i]->Id,Basa[i]->Number,Basa[i]->Name,Basa[i]->NumberTele,Basa[i]->Usp);
     }
        break;
  case '3':
    for(int i=0;i<NK;i++)
      printf("%d %s %s %ld %f \n",Basa[i]->Id,Basa[i]->Number,Basa[i]->Name,Basa[i]->NumberTele,Basa[i]->Usp);
  }
 }
 
 
}

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

В этом коде определен заголовочный файл file.h, который содержит функции для чтения и записи данных в файл. Файл называется File.txt. Также определена структура данных tele, которая содержит поля для хранения информации об идентификаторе, номере, имени, номере телефона и успеваемости. В функции main() создается массив структур tele с размером NK и осуществляется его инициализация. Затем пользователю предлагается выбрать действие из меню:

  1. Чтение файла (case '1'): для каждого элемента массива структур tele вызывается функция OUT(), которая записывает данные в файл.
  2. Запись файла (case '2'): вызывается функция IN(), которая считывает данные из файла и сохраняет их в массиве структур tele.
  3. Выход из программы (case '27'): программа завершается.
  4. Показать данные (case '3'): для каждого элемента массива структур tele выводится информация на экран. Программа работает в цикле, пока пользователь не выберет действие '27'.

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


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

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

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