Форум программистов, компьютерный форум CyberForum.ru

fread изменяет неиспользуеммые ею переменные - C++

Восстановить пароль Регистрация
 
Exeil
 Аватар для Exeil
5 / 5 / 1
Регистрация: 06.12.2010
Сообщений: 50
19.12.2010, 12:26     fread изменяет неиспользуеммые ею переменные #1
Всем привет моя задача сделать программу для регистрации пассажиров, я сделал функцию и встретился с такой проблемой, что после использования fread сбивается несколько переменных, не используемых в ней.

Вот то получается в цикле после первого использования fread
Картинка

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
int call_reg()
{
    int k;
    FILE *freg;
    reis n_reg;
    if ((freg = fopen("reg.dat", "rb+")) == NULL)
    {
        fprintf(stderr, "\nЋиЁЎЄ*: ”*©« reis.dat *Ґ ¬®¦Ґв Ўлвм Їа®зЁв**.\n");
        return -2;
    }
 
    printf("  ");
    ramka(74, 0);
    //‚лў®¤ ३ᮢ Ё§ д*©«*
    int size_type_reg = 32*sizeof(char)+14*sizeof(int);
    unsigned long kol_reg = filelength(fileno(freg)) / size_type_reg;
    int i = 0;
    //for(i = 0; i < kol_reg; i++)
    for(i = 0; i < kol_reg; i++)
    {
        fread(&n_reg, size_type_reg, 1, freg);
        printf("%2dє Їг*Єв: %16s ®вЇа*ўЄ*: %2d.%2d.%2d ЇаЁЎлвЁҐ: %2d.%2d.%2d Ї®б*¤ЄЁ: %16s *®¬Ґа б*¬.: %2d є\n", i, n_reg.punkt, n_reg.time_start.p_day, n_reg.time_start.p_chas, n_reg.time_start.p_menuta, n_reg.time_finish.p_day, n_reg.time_finish.p_chas, n_reg.time_finish.p_menuta, n_reg.promej_posadki, n_reg.sam);
    }
    printf("  ");
    ramka(74, 1);
 
    //।*ЄвЁа®ў**ЁҐ б*¬®«Ґв*
    char komanda[90];
    char *l;
    printf("\n‚ўҐ¤ЁвҐ *®¬Ґа ३б*: \n");
    scanf("%s", &komanda);
    flushall();
 
    if (l = strstr(komanda, "edit"))
    {
        l += 4;
        k = atoi(l);
        printf("\n‚ўҐ¤ЁвҐ *®¬Ґа ३б* Ї®¤«Ґ¦*饣® Ё§¬Ґ*Ґ*Ёо: \n*0-*ЁзҐЈ® *Ґ ¬Ґ*пвм\n");
 
        if(k < 0 || k >= i) return 1;
        printf("‚ўҐ¤ЁвҐ ў в*Є®¬ в*Є®¬ Ї®ап¤ЄҐ: [Їг*Єв] [ўаҐ¬п ®вЇа*ўЄЁ] [ўаҐ¬п ЇаЎлвЁп] [Їа®¬Ґ¦гв®з*лҐ Ї®б*¤ЄЁ][*®¬Ґа б*¬®«Ґв*]\n *ЎҐ§ ЁбЇ®«м§®ў**Ёп бЄ®Ў®Є []\n");
        gets(komanda);
 
        //ђ*бЇ®§**Ґ¬ ўўҐ¤Ґ**го Ё*д®а¬*жЁо
        l = strtok(komanda, " ");
        strcpy(n_reg.punkt, l);              //Їг*Єв
 
        //ўаҐ¬п ®вЇа*ўЄЁ ў в*Є®¬ д®а¬*вҐ: [¤Ґ*м.з*б.¬Ё*гв*]
        l = strtok(NULL, " ");
        n_reg.time_start.p_day = atoi(l);    //¤Ґ*м ®вЇа*ўЄЁ
        n_reg.time_start.p_chas = atoi(l+3);
        n_reg.time_start.p_menuta = atoi(l+6);
        //ўаҐ¬п ЇаЁЎлвЁп
        l = strtok(NULL, " ");
        n_reg.time_finish.p_day = atoi(l);     //¤Ґ*м ®вЇа*ўЄЁ
        n_reg.time_finish.p_chas = atoi(l+3);  //з*б
        n_reg.time_finish.p_menuta = atoi(l+6);//¬Ё*гв*
 
        //Їа®¬Ґ¦гв®з*лҐ Ї®б*¤ЄЁ
        l = strtok(NULL, " ");
        strcpy(n_reg.promej_posadki, l);
 
        //*®¬Ґа б*¬®«Ґв*
        l = strtok(NULL, " ");
        n_reg.sam = atoi(l);
 
        //¬Ґ*塞 ў д*©«Ґ
        fseek(freg, k*size_type_reg, SEEK_SET);
        fwrite(&n_reg, size_type_reg, 1, freg);
        fclose(freg);
        printf("‡*ЇЁбм Ё§¬Ґ*Ґ**.");
        getch();
        return -1;
    }
    else
    {
        k = atoi(komanda) - 1;
        return k;
    }
 
}
В чем проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2010, 12:26     fread изменяет неиспользуеммые ею переменные
Посмотрите здесь:

C++ fread
C++ Непонятки с fread
C++ fseek / fread
C++ Функция fread и матрицы
C++ fread с непонятной ошибкой
C++ Особенности работы fread
C++ Функции fread() и fwrite()
Поиск ошибки в fread C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
19.12.2010, 13:53     fread изменяет неиспользуеммые ею переменные #2
1. Что такое reis ? Какой-то тип данных? Структура?
2. Чем бы он не был, fread(n_reg, sizeof(reis), ...
Exeil
 Аватар для Exeil
5 / 5 / 1
Регистрация: 06.12.2010
Сообщений: 50
19.12.2010, 13:55  [ТС]     fread изменяет неиспользуеммые ею переменные #3
Цитата Сообщение от Day Посмотреть сообщение
1. Что такое reis ? Какой-то тип данных? Структура?
C++
1
2
3
4
5
6
7
//32*sizeof(char) + 14*sizeof(int)
typedef struct {char punkt[16];
        ptime time_start;
        ptime time_finish;
        char  promej_posadki[16];
        int   sam;
        } reis;
Yandex
Объявления
19.12.2010, 13:55     fread изменяет неиспользуеммые ею переменные
Ответ Создать тему
Опции темы

Текущее время: 02:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru