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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
InSpectr
10 / 10 / 1
Регистрация: 09.09.2013
Сообщений: 53
#1

чтения заданной строки через fseek - C++

19.09.2013, 22:00. Просмотров 325. Ответов 2
Метки нет (Все метки)

Программа должна считать строку из бинарного файла. Но считывает не правильно... подскажите.
что тут как я понимаю не так
fseek(ff,(sizeof(nom-1))*(i),SEEK_SET);
fread(&BLOCKNOTE[nom],sizeof (BLOCKNOTE),1,ff);
Сама программа:
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
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <string>
#include <fstream>
 
 
using namespace std;
 
 
struct NOTE {
char NAME[30];
long long int TELE;
int BDAY[3];
};
 
 
int main()
{ 
    
    int m;
    int i,q,c;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout<<"Сколько сотрудников: ";
    (cin>>m).get();
    NOTE *BLOCKNOTE= new NOTE [m];
    cout<<"Введите Имя, Телефон, Дату рождения\n";
    for(i=0;i<m;i++)
    { 
        gets(BLOCKNOTE[i].NAME);
        cin >>BLOCKNOTE[i].TELE;
        for(q=0;q<3;q++)
            cin >>BLOCKNOTE[i].BDAY[q];
        cin.get(); 
    }
    
    
 
    ofstream f("binary.dat", ios::binary);
    for(int ia=0;ia<i;ia++)
    {
        f.write((char *)(&BLOCKNOTE[ia]),sizeof (NOTE));
    }
    f.close();
    
    
    FILE *ff;
    int nom;
    bool temp;
    cout<<endl<<endl<<"Введите какую строку хотите вывести: ";
    cin>>nom;
    
        ff=fopen("binary.dat","r+b");
        fseek(ff,(sizeof(nom-1))*(i),SEEK_SET);
        fread(&BLOCKNOTE[nom],sizeof (BLOCKNOTE),1,ff);
        fclose(ff);
        
 
        cout<<" Имя: "<<BLOCKNOTE[nom].NAME;
        cout<<" Телфон: "<<BLOCKNOTE[nom].TELE;
        cout<<" Дата: ";
        for(int q=0;q<3;q++)
        {
            cout<<" "<< BLOCKNOTE[nom].BDAY[q] ;
        }
    
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 22:00     чтения заданной строки через fseek
Посмотрите здесь:

Ввод строки в структуре, заданной как char *str через scanf (ПОМОЩЬ) - C++
struct {char *str;} A; scanf(&quot;%s&quot;, &amp;A.str); Аварийное завершение программы после ввода. Если задавать вручную значение внутри...

Из первой заданной строки удаляется каждый символ, принадлежащий второй заданной строке - C++
Составить процедуру, в результате обращения к которой из первой заданной строки удаляется каждый символ, принадлежащий второй заданной...

Заменить значения всех элементов заданной строки матрицы числами заданной последовательности - C++
Дан двумерный массив (MxN). Составить программу, которая заменяет значения всех элементов некоторой строки массива числами заданной...

Ошибка чтения строки - C++
есть задача считать из Edit данныe в таблицу ListView но выползает ошибка в строках с числовыми параметрами Unit1.cpp(74): E2034...

Ошибка чтения знаков строки - C++
Добрый вечер. При запуске данного кода возникает ошибка в строке 13. Подскажите, пожалуйста, как ее исправить? #include &lt;iostream&gt; ...

Задача на строки и чтения из файла - C++
Известны названия футбольных команд и результаты проведенных матчей футбольного турнира. Результат каждого матча (счет игры) – это два...

Пропускается первый оператор чтения строки с клавиатуры - C++
Проблема в этом фрагменте кода. В консоли запрашивает сразу ввести activity, пропуская чтение с клавиатуры name. ...

В чем различие чтения строки и слова при вводе - C++
Здравствуйте. Поясните, пожалуйста, в чем различие строки и слова? Мне дано задание, чтобы читалось со стандартного устройства ввода...

Getchar() возвращает EOF сразу после чтения первого символа строки - C++
#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;vector&gt; #include &lt;conio.h&gt; using namespace std; using...

fseek для ab - C++
Нигде не могу найти работает ли fseek для режима ab??? или у аb статически указатель стоит в конце файла? мне нужно в середину файла...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2013, 01:20     чтения заданной строки через fseek #2
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
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <string>
#include <fstream>
 
 
using namespace std;
 
 
struct NOTE {
char NAME[30];
long long int TELE;
int BDAY[3];
};
 
 
int main()
{ 
    
    int m;
    int i,q,c;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout<<"Сколько сотрудников: ";
    (cin>>m).get();
    NOTE *BLOCKNOTE= new NOTE [m];
    cout<<"Введите Имя, Телефон, Дату рождения\n";
    for(i=0;i<m;i++)
    { 
        gets(BLOCKNOTE[i].NAME);
        cin >>BLOCKNOTE[i].TELE;
        for(q=0;q<3;q++)
            cin >>BLOCKNOTE[i].BDAY[q];
        cin.get(); 
    }
    
    
 
    ofstream f("binary.dat", ios::binary);
    for(int ia=0;ia<i;ia++)
    {
        f.write((char *)(&BLOCKNOTE[ia]),sizeof (NOTE));
    }
    f.close();
    
    
    FILE *ff;
    int nom;
    bool temp;
    cout<<endl<<endl<<"Введите какую строку хотите вывести: ";
    cin>>nom;
    
    ff = fopen("binary.dat","r+b");
    
    int n = sizeof(NOTE) * (nom - 1);
    fseek(ff, n, SEEK_SET);
    
    NOTE note;
    
    fread(&note, sizeof(NOTE), 1, ff);
    fclose(ff);
        
    cout<<" Имя: "<<note.NAME;
    cout<<" Телфон: "<<note.TELE;
    cout<<" Дата: ";
    for(int q=0;q<3;q++)
    {
        cout<<" "<< note.BDAY[q] ;
    }
        
    /*cout<<" Имя: "<<BLOCKNOTE[nom - 1].NAME;
    cout<<" Телфон: "<<BLOCKNOTE[nom - 1].TELE;
    cout<<" Дата: ";
    for(int q=0;q<3;q++)
    {
        cout<<" "<< BLOCKNOTE[nom - 1].BDAY[q] ;
    }*/
    
 
return 0;
}
InSpectr
10 / 10 / 1
Регистрация: 09.09.2013
Сообщений: 53
21.09.2013, 15:40  [ТС]     чтения заданной строки через fseek #3
Все работает спасибо большое.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru