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