Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2015, 21:12   #1
orakul77
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 42
По умолчанию Работа с файлом

Каждая структура состоит из минимум , 4 полей , некоторые из них могут быть даны . На момент сдачи в файле должно быть 5 записей . Должна быть возможность :
1)Если файл существует и не пустой , тогда прочитать данные из файла в динамический массив , но если файла не существует , создать его.
2)Добавить данные
3)Искать по определенному принципу (в нашем случае по фамилиям водителей , которые водят конкретную машину в фирме )
4)Удалять записи
5)Посмотреть базу данных
6) Посмотреть индивидуальное задание
7)Сортировать записи по фамилиям
8)Кончая работу программы , изменения сохранить в файле .


И само задание : Найти всех водителей , которые водят (обслуживают ) конкретную машину фирмы .
orakul77 вне форума Ответить с цитированием
Старый 05.05.2015, 16:02   #2
orakul77
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 42
По умолчанию

если есть у кого время - буду оч благодарен вам за помощь )
orakul77 вне форума Ответить с цитированием
Старый 05.05.2015, 16:07   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Для затравки такое предложу: http://www.programmersforum.ru/showthread.php?t=105501
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2015, 14:12   #4
orakul77
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 42
По умолчанию

Есть очень похожий пример как надо мне - тока тут магазин . Если кто может помочь передать этот код под мой вариант буду в миллиарды раз вам благодарен



Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
struct tov 
{
    char name[10]; 
    float c; 
    int kol;
} t1;
 
void input(FILE **); // создание нового файла
void print(FILE **); // просмотр файла
void app(FILE **); // добавление в файл
void find(FILE **); // поиск и изменение
void bay(FILE **);
 
int main()
{ 
    setlocale(LC_ALL, ""); // ВКЛЮЧАЕМ РУССКИЙ
    char c;
    FILE *tf;
    
    while (1)
    {
        puts("  1 – новый файл");
        puts("  2 – просмотр файла");
        puts("  3 – добавление в файл");
        puts("  4 – поиск и изменение");
        puts("  0 - выход");
        c=getch();
        switch(c)
        {   
            case '1':input(&tf);break;
            case '2':print(&tf);break;
            case '3':app(&tf);break;
            case '4':find(&tf);break;
            case '0':return 0;
            default : puts(" неверный режим");
        }
    }
}
    
void input(FILE **tf) // СОЗДАНИЕ НОВОГО ФАЙЛА
{ 
    char ch;
    *tf=fopen("file1.dat","wb"); // открытие бинарного файла для записи
 
    printf("\n Ввод товаров\n");
    do
    { 
        printf("\n Марка: "); 
        scanf("%s",&t1.name);
        printf(" Цена: "); 
        scanf("%f",&t1.c);
        printf(" Количество: "); 
        scanf("%d",&t1.kol);
        fwrite(&t1,sizeof(t1),1,*tf); // запись в файл одной структуры t1
        printf("\n Закончить?  y/n  ");
        ch=getch();
        printf("\n");
    }
    while (ch != 'y');
    fclose(*tf);
    getchar();
}
 
void print(FILE **tf) // ПРОСМОТР ФАЙЛА
{ 
    int i;
 
    *tf=fopen("file1.dat","rb"); // открытие бинарного файла для чтения
    i=1;
    fread(&t1,sizeof(t1),1,*tf); // чтение из файла одной структуры t1
    while (!feof(*tf))
    { 
        printf("\n  %d Товар: %10s Цена: %6.2f Кол-во: %d \n",i,t1.name,t1.c,t1.kol);
        fread(&t1,sizeof(t1),1,*tf);
        i++;
    }
    fclose(*tf);
}
    
void app(FILE **tf) // ДОБАВЛЕНИЕ НОВОЙ ЗАПИСИ
{ 
    char ch;
    *tf=fopen("file1.dat","ab"); // открытие бинарного файла для добавления
 
    printf("\n  Ввод товаров \n");
    do
    {  
        printf("\n Марка: "); scanf("%s",&t1.name);
        printf(" Цена: "); scanf("%f",&t1.c);
        printf(" Количество: "); scanf("%d",&t1.kol);
        fwrite(&t1,sizeof(t1),1,*tf);
        printf(" Закончить?  y/n ");
        ch=getch();
        printf("\n");
    } while (ch != 'y');
    fclose(*tf);
    getchar();
}
 
void find(FILE **tf) // ПОИСК - ОШИБКА ТУТ
{ 
    char h, tov[10];
    long int i;
    *tf=fopen("file1.dat","rb+"); // открытие бинарного файла для чтения и записи
    puts(" Название искомого товара: ");
    gets(tov);
    fread(&t1,sizeof(t1),1,*tf);
    while (!feof(*tf))
    {
        if (strcmp(t1.name,tov)==0)
        {   
            printf(" Марка: %s Цена: %6.2f Кол-во: %d",t1.name,t1.c,t1.kol);
            printf("\n КУПИТЬ? y/n ");
            h=getch();
            if (h=='y')
            {  
                printf("\n Количество: ");
                scanf("%d",&t1.kol);
                printf("\n Цена: ");
                scanf("%f",&t1.c);
                i=sizeof(t1);
                fseek(*tf,-i,SEEK_CUR); // возврат на sizeof(t1) байт назад                ОШИБКА
                fwrite(&t1, sizeof(t1), 1, *tf);//запись изменённой структуры   ОШИБКА
                fflush(*tf);
            }
        }
        fread(&t1,sizeof(t1),1,*tf);
    }
    fclose(*tf);
    getchar();
}
orakul77 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлом! Kami-sama Visual C++ 0 07.05.2011 20:48
работа с файлом DinamoBrynsk Помощь студентам 4 25.02.2011 19:33
Работа с файлом orkus Общие вопросы Delphi 4 02.04.2010 04:51
Работа с файлом SVadiks Помощь студентам 3 08.12.2009 17:46
работа с файлом scudo Общие вопросы Delphi 4 12.11.2009 22:52