Toon posts:

Records bepalen en een string probje :p

Pagina: 1
Acties:

Verwijderd

Topicstarter
Onderstaan is een deeltje uit een oefening voor het school.
Nu weet ik niet op welke manier ik kan bepalen
hoeveel records er al in een file zijn geschreven.
Hier doe ik het met de VAR y.
Maar dit moet toch ook anders op te lossen zijn,
want als ik het programma opnieuw open,
staat y weer op 0, terwijl er eigenlijk bv al 3records zijn.

En op welke manier werkt
cin.getline( string , 30 , '\n'); juist ?
Wat bij mij slaat het proggy dan volledig door :S

THX

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

struct Bestand
{
    char naam[30];
    char voornaam[30];
    char straat[30];
    int nummer;
    char gemeente[30];
    int postnummer;
    char klas[20];
} bestand;

fstream file ("c:\\test.txt", ios::in | ios::out | ios::binary );
int uit;
int x , y = 0;

void main()
{
    void _ingave(void);
    void _bijvoegen(void);
    void _uitlezen(void);
    void _naam(void);
    void _klas(void);
for(;;)
{
    cout << endl << endl << " 1) Ingave " << endl;
    cout << " 2) bijvoegen " << endl;
    cout << " 3) op naam zoeken " << endl;
    cout << " 4) klas ingave " << endl;
    cout << "      5) Einde" << endl;
    cout << " 6) Uitlezen " << endl << endl;

    int keuze;

    cin >> keuze;

    switch(keuze)
    {
    case 1:
        file.seekg(0);
        _ingave();
        break;
    case 2:
        file.seekg(0);
        _bijvoegen();
        break;
    case 3:
        file.seekg(0);
        _naam();
        break;
    case 4:
        file.seekg(0);
        _klas();
        break;
    case 5:
        exit (1);
        break;

    case 6:
        file.seekg(0);
        _uitlezen();
        break;
  }
}
}

void _ingave(void)
{
    for(;;)
    {
        cout << endl << " Naam: ";          cin >> bestand.naam;
            if (! (strcmp( bestand.naam , "9")))  break  ;
        cout << " Voornaam: ";      cin >> bestand.voornaam;
        cout << " Straat: ";        cin >> bestand.straat;
        cout << " Nummer: ";        cin >> bestand.nummer;
        cout << " Gemeente: ";      cin >> bestand.gemeente;
        cout << " Postnummer: ";    cin >> bestand.postnummer;
        cout << " Klas: ";          cin >> bestand.klas;

        y++;

        file.write((char *)(&bestand), sizeof(Bestand));
    }
}


void _uitlezen(void)
{
    for ( x = 0 ; x < y ; x++ )
    {
        file.seekg(  x * sizeof(Bestand) , ios::beg);

        file.read((char *)(&bestand), sizeof(Bestand));

        cout << endl << " Naam: " << bestand.naam << endl;
        cout << " Voornaam: " << bestand.voornaam << endl;
        cout << " Straat: " << bestand.straat << endl;
        cout << " Nummer: " << bestand.nummer << endl;
        cout << " Gemeente: " << bestand.gemeente << endl;
        cout << " Postnummer: " << bestand.postnummer << endl;
        cout << " Klas: " << bestand.klas << endl;
    }
}

Verwijderd

Waarom schrijf je niet als eerste een int naar je bestand waarin je opslaat hoeveel records er in het bestand zitten?

Verwijderd

Topicstarter
Verwijderd schreef op 30 november 2002 @ 15:02:
Waarom schrijf je niet als eerste een int naar je bestand waarin je opslaat hoeveel records er in het bestand zitten?
gdv :) dak daar nie aan gedacht heb :p

Maar is da totale grote van het bestand niet te bepalen via fseek of zo ?

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Verwijderd schreef op 30 November 2002 @ 15:54:
[...]

gdv :) dak daar nie aan gedacht heb :p

Maar is da totale grote van het bestand niet te bepalen via fseek of zo ?
Je kunt de filesize opvragen en die delen door de grote van een record (sizeof(bestand)); Alleen even opletten met het opvragen van bestandsgrootte bij geopende bestanden (als ik me niet vergis).

|_____vakje______|


Verwijderd

Topicstarter
CyberSnooP schreef op 30 November 2002 @ 16:05:
[...]
Je kunt de filesize opvragen en die delen door de grote van een record (sizeof(bestand)); Alleen even opletten met het opvragen van bestandsgrootte bij geopende bestanden (als ik me niet vergis).
En met welke regel doe ik dit ?