Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 1
1

При попытке чтения из бинарного файла программа аварийно завершается

06.06.2016, 00:14. Показов 818. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо реализовать чтение/запись очереди из/в бинарный файл. При попытке чтения из файла программа аварийно завершается. Подскажите, пожалуйста, в чем может быть проблема.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <locale.h>
#include <conio.h>
#include <string.h>
 
struct Vedomost
{
    char FIO[255];
    char Doljnost[255];
    int Money = 0;
    int Bolnychnyy = 0;
    float Nalog = 0;
    float Profsouz = 0;
    float Zarplata = 0;
    char Otmetka;
    Vedomost *Next = NULL;
};
Vedomost *TURN;
FILE *file;
Vedomost n;
 
void SaveToFile(Vedomost *Head){
        file = fopen("D:\\base.txt", "a+b");
    if (Head == NULL){//конец очереди
        fclose(file);
    }
    else {
    fwrite(&(*Head), 519, 1, file);
    fclose(file);
    SaveToFile(Head->Next);
    }
 
}
// процедура загрузки списка из файла
void LoadFromFile(Vedomost** Head){
        file = fopen("D:\\base.txt", "r+b");
        fseek(file, 519, SEEK_CUR); //перемещение указателя в текущее положение файла 
        if (char c = getc(file) == EOF){
        fclose(file);
        return; //завершение выполнения функции и передача управления вызывающей функции
        }
        else{
        fread(&(*Head), 519, 1, file);
        *Head = new Vedomost();
        fclose(file);
        (*Head)->Nalog = ((*Head)->Money + (*Head)->Bolnychnyy)*0.13;
        (*Head)->Profsouz = ((*Head)->Money + (*Head)->Bolnychnyy)*0.01;
        (*Head)->Zarplata = (*Head)->Money + (*Head)->Bolnychnyy - (*Head)->Nalog - (*Head)->Profsouz;
        LoadFromFile(&(*Head)->Next);
    }
}
 
void AddToTurn(Vedomost **Head, Vedomost n){
    if ((*Head) == NULL){
        *Head = new Vedomost(); strcpy((*Head)->FIO, n.FIO); strcpy((*Head)->Doljnost, n.Doljnost); (*Head)->Money = n.Money; (*Head)->Bolnychnyy = n.Bolnychnyy;
        (*Head)->Nalog = n.Nalog; (*Head)->Profsouz = n.Profsouz; (*Head)->Zarplata = n.Zarplata; (*Head)->Otmetka = n.Otmetka;
 
        // В область памяти Head помещаются значения временного списка n
        (*Head)->Next = NULL;
    }
    else {
        AddToTurn((&(*Head)->Next), n);
    }
}
void AddToTurn2(){
    printf("Введите фамилию, имя и отчество\n"); // процедура ввода элементов списка
    scanf("%s", n.FIO);
    printf("\nВведите должность\n");
    scanf("%s", n.Doljnost);
    printf("\nВведите оклад\n");
    int a;
    scanf("%d", &a);
    n.Money = a;
    printf("\nВведите оплату по б/л\n");
    scanf("%d", &a);
    n.Bolnychnyy = a;
    printf("\nВведите отметку о получении\n");
    scanf("%s", &n.Otmetka);
    // считывание введенных значений
    n.Nalog = (n.Money + n.Bolnychnyy) * 0.13;
    n.Profsouz = (n.Money + n.Bolnychnyy)*0.01;
    n.Zarplata = n.Money + n.Bolnychnyy - n.Nalog - n.Profsouz;
    // расчет значений для некоторых полей
    AddToTurn(&TURN, n); // добавление элемента из списка n в список для всех элементов TURN с использованием процедуры AddToTurn
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2016, 00:14
Ответы с готовыми решениями:

Работа с матрицами (программа завершается аварийно)
Помогите, на Си, не С++. Выдает другие значения, к тому же аварийно завершает программу Для...

Программа крашится при попытке чтения числа с плавающей точкой
Первый пост, немного волнительно :) Помогаю другу с курсовой. Вчера он мне кинул код, который...

Ошибка при попытке открытия для чтения текстового файла
Первоначальная задача была такова: Дан файл А, компоненты которого являются целыми числами....

Segmentation fault при попытке чтения файла (которого нет)
Новичок в С. Сижу под линухом. Что-бы освоить аргументы командной строки и i/o файлов в С решил...

0
06.06.2016, 00:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2016, 00:14
Помогаю со студенческими работами здесь

Чтение бинарного файла на втором проходе цикла завершается с ошибкой
Добрый день,подскажите как решить проблемку. Читаю бинарный файл в который через некоторое время...

При открытия файла аварийно завершается программа
Пишу меди плеер , при открытия файла программа завершаться аварийно, вот код программы using...

Программа завершается аварийно при вызове функции
Делаю консольное приложение на шестом Билдере. Не могу найти ошибку.Убил день. Прога компилиться...

Программа аварийно завершается при прохождении цикла
QVector&lt;int&gt; Set; QPair &lt;int,int&gt; Map; int c=0,Num,; srand(time(NULL)); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru