Написать любую программу со структурой и файлами - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем структуру item, которая состоит из беззнакового целого и односимвольной номенклатуры
- Объявляем переменные: FILE *f, item z[20], int i
- Открываем файл
struct.dat
для записи в двоичном формате с помощью функции fopen - Проверяем, что файл успешно открыт, иначе выводим сообщение об ошибке и завершаем программу
- Выводим сообщение о том, что программа будет генерировать 20 записей типа struct и записывать их в файл
struct.dat
- Сбрасываем генератор случайных чисел с помощью функции randomize
- Запускаем цикл for от 0 до 20 и генерируем случайное значение для n и 'A' + i для s
- Записываем элемент списка в файл с помощью функции fwrite
- Выводим элемент списка на экран с помощью функции printf
- Закрываем файл с помощью функции fclose
- Открываем файл
struct.dat
для чтения с помощью функции fopen - Проверяем, что файл успешно открыт, иначе выводим сообщение об ошибке и завершаем программу
- Запускаем цикл for от 0 до 20 и читаем элементы списка из файла с помощью функции fread
- Выводим элемент списка на экран с помощью функции printf
- Выводим сообщение
Нажмите клавишу для выхода...
- Ждем нажатия клавиши с помощью функции getchar
- Завершаем программу с помощью функции return
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д