Написать любую программу со структурой и файлами - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д