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

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

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

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

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

textual
Листинг программы
  1. // Формирование файла с записями типа struct
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. #include <values.h>
  6.  
  7. typedef struct {        //Определяем структуру как элемент типа item
  8.  unsigned int n;    //Беззнаковое целое
  9.  char s;                //Односимвольная номенклатура
  10. } item;
  11.  
  12. int main (void) {
  13.  FILE *f;
  14.  item z[20];
  15.  int i;
  16.  clrscr();
  17.  f=fopen ("struct.dat","wb");   //Открытие файла для записи и проверка
  18.  if (f==NULL) {
  19.   printf ("\n Не могу открыть файл struct.dat для записи данных!"
  20.       "\n Нажмите любую клавишу...");
  21.   fflush (stdin); getchar(); return 1;
  22.  }
  23.  printf ("\n Сейчас программа сгенерирует 20 записей типа struct"
  24.      "\n Информация будет записана в файл struct.dat"
  25.      "\n Нажмите любую клавишу...");
  26.  fflush (stdin); getchar();     //Ждем нажатия клавиши
  27.  randomize();                   //Сбрасываем генератор случайных чисел
  28.  for (i=0; i<20; i++) {
  29.   z[i].n=random (MAXINT);       //Формируем 20 случайных элементов списка
  30.   z[i].s='A'+i;
  31.   fwrite (&z[i],sizeof(item),1,f); //Пишем элемент списка в файл
  32.   printf ("\n элемент %2d: (%u,%c)",i,z[i].n,z[i].s);
  33.                    //Выводим элемент списка на экран
  34.  }
  35.  printf ("\n Закроем файл struct.dat и затем прочитаем его с диска"
  36.      "\n Нажмите любую клавишу...\n\n");
  37.  fflush (stdin); getchar();
  38.  fclose (f);
  39.  f=fopen ("struct.dat","rb");   //Открытие файла для чтения и проверка
  40.  if (f==NULL) {
  41.   printf ("\n Не могу открыть файл struct.dat для чтения данных!"
  42.       "\n Нажмите любую клавишу...");
  43.   fflush (stdin); getchar(); return 2;
  44.  }
  45.  for (i=0; i<20; i++) {            //Читаем из файла элементы списка
  46.   fread (&z[i],sizeof(item),1,f);  //и выводим их на экран
  47.   printf ("\n элемент %2d: (%u,%c)",i,z[i].n,z[i].s);
  48.  }
  49.  printf ("\n Нажмите клавишу для выхода...");
  50.  fflush (stdin); getchar();     //Ждем нажатия клавиши
  51.  return 0;
  52. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы