Описать тип записи Маршрут самолета - 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);
}

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

  1. Включаем необходимые заголовочные файлы:
    • stdio.h для работы с файлами и вывода данных в консоль
    • stdlib.h для работы с функцией rand() и приведением типов
    • windows.h для поддержки русского языка
  2. Определяем тип записи enum для файловой системы:
    • FileInfo_t это тип записи enum, который определяет статус файла
    • Варианты значения enum: NO_FILE, EMPTY_FILE, VALID_FILE
  3. Функция testFile для проверки статуса файла:
    • Открывает файл с помощью функции fopen()
    • Перемещает указатель чтения в конец файла с помощью fseek() и ftell()
    • Возвращает статус файла с помощью оператора ?
  4. Основная функция main:
    • Устанавливает кодировку консоли на русскую с помощью SetConsoleCP() и SetConsoleOutputCP()
    • Запрашивает имя файла с помощью scanf()
    • Вызывает функцию testFile() для проверки статуса файла
    • Использует оператор switch для вывода соответствующего сообщения в зависимости от статуса файла
    • Завершает программу с помощью exit(0)
  5. Проверка кода на ошибки и обработка исключений:
    • Проверка на отсутствие файла или доступ к нему для чтения
    • Обработка пустого файла
    • Обработка файла с данными, доступными для чтения
    • Обработка ошибки в случае несоответствия статуса файла значению enum

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы