Написать любую программу со структурой и файлами - C (СИ)

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

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

Нужно написать любую программу. Задание такое : Написать программу со структурой. Работа с файлами , чтение и запись.

Решение задачи: «Написать любую программу со структурой и файлами»

textual
Листинг программы
// Формирование файла с записями типа struct
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <values.h>
 
typedef struct {        //Определяем структуру как элемент типа item
 unsigned int n;    //Беззнаковое целое
 char s;                //Односимвольная номенклатура
} item;
 
int main (void) {
 FILE *f;
 item z[20];
 int i;
 clrscr();
 f=fopen ("struct.dat","wb");   //Открытие файла для записи и проверка
 if (f==NULL) {
  printf ("\n Не могу открыть файл struct.dat для записи данных!"
      "\n Нажмите любую клавишу...");
  fflush (stdin); getchar(); return 1;
 }
 printf ("\n Сейчас программа сгенерирует 20 записей типа struct"
     "\n Информация будет записана в файл struct.dat"
     "\n Нажмите любую клавишу...");
 fflush (stdin); getchar();     //Ждем нажатия клавиши
 randomize();                   //Сбрасываем генератор случайных чисел
 for (i=0; i<20; i++) {
  z[i].n=random (MAXINT);       //Формируем 20 случайных элементов списка
  z[i].s='A'+i;
  fwrite (&z[i],sizeof(item),1,f); //Пишем элемент списка в файл
  printf ("\n элемент %2d: (%u,%c)",i,z[i].n,z[i].s);
                   //Выводим элемент списка на экран
 }
 printf ("\n Закроем файл struct.dat и затем прочитаем его с диска"
     "\n Нажмите любую клавишу...\n\n");
 fflush (stdin); getchar();
 fclose (f);
 f=fopen ("struct.dat","rb");   //Открытие файла для чтения и проверка
 if (f==NULL) {
  printf ("\n Не могу открыть файл struct.dat для чтения данных!"
      "\n Нажмите любую клавишу...");
  fflush (stdin); getchar(); return 2;
 }
 for (i=0; i<20; i++) {            //Читаем из файла элементы списка
  fread (&z[i],sizeof(item),1,f);  //и выводим их на экран
  printf ("\n элемент %2d: (%u,%c)",i,z[i].n,z[i].s);
 }
 printf ("\n Нажмите клавишу для выхода...");
 fflush (stdin); getchar();     //Ждем нажатия клавиши
 return 0;
}

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

  1. Включаем необходимые заголовочные файлы
  2. Определяем структуру item, которая состоит из беззнакового целого и односимвольной номенклатуры
  3. Объявляем переменные: FILE *f, item z[20], int i
  4. Открываем файл struct.dat для записи в двоичном формате с помощью функции fopen
  5. Проверяем, что файл успешно открыт, иначе выводим сообщение об ошибке и завершаем программу
  6. Выводим сообщение о том, что программа будет генерировать 20 записей типа struct и записывать их в файл struct.dat
  7. Сбрасываем генератор случайных чисел с помощью функции randomize
  8. Запускаем цикл for от 0 до 20 и генерируем случайное значение для n и 'A' + i для s
  9. Записываем элемент списка в файл с помощью функции fwrite
  10. Выводим элемент списка на экран с помощью функции printf
  11. Закрываем файл с помощью функции fclose
  12. Открываем файл struct.dat для чтения с помощью функции fopen
  13. Проверяем, что файл успешно открыт, иначе выводим сообщение об ошибке и завершаем программу
  14. Запускаем цикл for от 0 до 20 и читаем элементы списка из файла с помощью функции fread
  15. Выводим элемент списка на экран с помощью функции printf
  16. Выводим сообщение Нажмите клавишу для выхода...
  17. Ждем нажатия клавиши с помощью функции getchar
  18. Завершаем программу с помощью функции return

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


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

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

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