Из функции в заголовочном файле записать данные в структуру - C (СИ)
Формулировка задачи:
Подскажите , что я не так делаю. Надо из функции в заголовочном файле записать данные в структуру.
Вот код:
Файл main.c
Файл File.h
Файл File.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); } } }
#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
#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 и осуществляется его инициализация. Затем пользователю предлагается выбрать действие из меню:
- Чтение файла (case '1'): для каждого элемента массива структур tele вызывается функция OUT(), которая записывает данные в файл.
- Запись файла (case '2'): вызывается функция IN(), которая считывает данные из файла и сохраняет их в массиве структур tele.
- Выход из программы (case '27'): программа завершается.
- Показать данные (case '3'): для каждого элемента массива структур tele выводится информация на экран. Программа работает в цикле, пока пользователь не выберет действие '27'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д