Описать тип записи Маршрут самолета - C (СИ)
Формулировка задачи:
Доброе время суток!
Помогите пожалуйста найти и исправить ошибку в семестровой работе. Дана задача:
Составить программу для работы с файлом простейшей БД. Она должна включать в себя меню и обеспечивать выполнение следующих функций:
открытие и закрытие файла;
создание и добавление записей в файл;
вывод содержимого файла на экран;
выбор и запись в новый файл данных с заданными характеристиками;
выбор и корректировка содержимого файла.
Содержание записей в файле:
N Маршрут самолета Расстояние Количество мест
Ошибка заключается в том, что переменная ved.n не объявлена.. точнее, объявлена, но не там где нужно, а где нужно - не пойму..
#include <stdio.h> #include <stdlib.h> FILE *fp; void open(char filename[20], char dost[3]) //Открытие нового файла { int a; printf("\n Vvedite imya faila:"); scanf("%s",filename); fopen(filename,"r"); if(ftell(fp)==0) dost="w"; else {printf("\n File suchestvuyet \n Vvedite tip dostypa \n w - perezapisat file \ \n r - prochitat file \n w+ - chtenie i zapis \n"); scanf("%s",dost); } fopen(filename,dost); } void creation(char filename[20]) //Создание файла { char k; do { printf("\n Vvedite nomer reisa:"); scanf("%3d",ved.n); printf("\n Vvedite marshrut:"); scanf("%30s",ved.marshrut); printf("\n Vvedite rasstoyanie:"); scanf ("%5d", ved.rasst); printf ("\n Vvedite kolichestvo mest:"); scanf ("%3d", ved.mest); void addrec(char filename[20]); //Добавление записей void corr(char filename[20]); //Корректировка файла struct lib { int n; char marshrut[30]; int rasst[5]; int mest[11]; } ved; char filename[20]; int main(int argc, char *argv[]) { int a; char str1[3]; printf("\n Otkroite ili sozdaite file"); open(filename,str1); do { //Главное меню программы printf("\n Viberite trebuyemuyu operaziyu:\n 1 - Otkryt file \n 2 - Vivesti soderzhimoye na ekran\ \n 3 - Redaktirovat file \n 4 - Dobavit zapis v file \n 0 - Vyhod"); scanf("%d",a); switch(a) { case 0: return; case 1: fcloseall(); open(filename,str1);break; case 2: printf("\n filename", filename[20]);break; case 3: corr(filename);break; case 4: addrec(filename);break; default: printf("\n Oshibka vvoda"); } //switch } while(1); fcloseall(); system("PAUSE"); return 0; }
Решение задачи: «Описать тип записи Маршрут самолета»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <windows.h> /* для поддержки русского языка */ typedef enum { NO_FILE = 0, EMPTY_FILE = 1, VALID_FILE = 2 } FileInfo_t; FileInfo_t testFile(const char *name){ FILE *f; long pos; if ( ( f = fopen(name, "rb") ) == NULL ) return NO_FILE; fseek(f, 0, SEEK_END); pos = ftell(f); fclose(f); return ( pos ) ? VALID_FILE : EMPTY_FILE; } int main(void){ char file_name[512]; FileInfo_t status; /* FILE *f; ещё чего-нибудь... */ SetConsoleCP(1251); SetConsoleOutputCP(1251); printf("Имя файла: "); scanf("%s", file_name); status = testFile(file_name); switch ( status ){ case NO_FILE : printf("Файл не существует или недоступен для чтения\n"); break; case EMPTY_FILE : printf("Пустой файл\n"); break; case VALID_FILE : printf("Файл с данными, доступными для чтения\n"); break; default : printf("ВСЁ ПОГИБЛО!!!\n"); } exit(0); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
stdio.h
для работы с файлами и вывода данных в консольstdlib.h
для работы с функциейrand()
и приведением типовwindows.h
для поддержки русского языка
- Определяем тип записи enum для файловой системы:
FileInfo_t
это тип записи enum, который определяет статус файла- Варианты значения enum:
NO_FILE
,EMPTY_FILE
,VALID_FILE
- Функция
testFile
для проверки статуса файла:- Открывает файл с помощью функции
fopen()
- Перемещает указатель чтения в конец файла с помощью
fseek()
иftell()
- Возвращает статус файла с помощью оператора
?
- Открывает файл с помощью функции
- Основная функция
main
:- Устанавливает кодировку консоли на русскую с помощью
SetConsoleCP()
иSetConsoleOutputCP()
- Запрашивает имя файла с помощью
scanf()
- Вызывает функцию
testFile()
для проверки статуса файла - Использует оператор
switch
для вывода соответствующего сообщения в зависимости от статуса файла - Завершает программу с помощью
exit(0)
- Устанавливает кодировку консоли на русскую с помощью
- Проверка кода на ошибки и обработка исключений:
- Проверка на отсутствие файла или доступ к нему для чтения
- Обработка пустого файла
- Обработка файла с данными, доступными для чтения
- Обработка ошибки в случае несоответствия статуса файла значению enum
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д