Beste Tweakers,
Op het moment loop ik vast met een opdracht. Hierbij maak ik een woordenboek, een engels woord met de vertaling erbij. Ik lees een .txt bestand uit en plaats dit in een Dynamisch Array. Ik kan dan een woord toevoegen, verwijderen(werkt nog niet), uitprinten en exit.
Als ik exit doe, dan wordt het Dynamische Array terug in het .txt bestand gezet met de nieuwe woorden.
Op het begin heb ik dan bijvoorbeeld:
book boek
keyboard toetsenbord
mouse muis
Met een erbij wordt het dan
book boek
keyboard toetsenbord
mouse muis
table tafel
Het wordt alleen
book boek
keyboard toetsenbord
mouse muistable tafel
Het werkte eerst, maar toen ik bezig was met het verwijderen stopte het met werken. Ik kom er nu niet meer uit en heb veel gezocht. Hierbij wat code:
aantalZinnen is een variabel die bijhoudt hoeveel woorden met vertaling er zijn.
adres = een pointer.
struct
inlezen
De while waar het toevoegen waarschijnlijk fout gaat:
Het terugschrijven naar het .txt bestand:
De code ziet bij het toevoegen dus wel dat er een nieuw woord is met vertaling. Maar zet dit niet op een nieuwe regel.
Hopelijk heeft iemand een idee!
Alvast bedankt!
Op het moment loop ik vast met een opdracht. Hierbij maak ik een woordenboek, een engels woord met de vertaling erbij. Ik lees een .txt bestand uit en plaats dit in een Dynamisch Array. Ik kan dan een woord toevoegen, verwijderen(werkt nog niet), uitprinten en exit.
Als ik exit doe, dan wordt het Dynamische Array terug in het .txt bestand gezet met de nieuwe woorden.
Op het begin heb ik dan bijvoorbeeld:
book boek
keyboard toetsenbord
mouse muis
Met een erbij wordt het dan
book boek
keyboard toetsenbord
mouse muis
table tafel
Het wordt alleen
book boek
keyboard toetsenbord
mouse muistable tafel
Het werkte eerst, maar toen ik bezig was met het verwijderen stopte het met werken. Ik kom er nu niet meer uit en heb veel gezocht. Hierbij wat code:
aantalZinnen is een variabel die bijhoudt hoeveel woorden met vertaling er zijn.
adres = een pointer.
struct
C:
1
2
3
4
5
| struct relatie { char woord[30]; char vertaling[30]; }; |
inlezen
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| for(i = 0; i < 60; i++) regel[i] = '\0'; FILE *fp; fp = fopen("file.txt", "r"); while(fgets(regel, sizeof regel, fp) != NULL) { aantalZinnen++; woorden = (relatie *)realloc(adres, aantalZinnen * sizeof(relatie)); adres = woorden; strcpy(woorden[aantalZinnen - 1].woord, strtok(regel, " ")); strcpy(woorden[aantalZinnen - 1].vertaling, strtok(NULL, " ")); for(i = 0; i < 60; i++) regel[i] = '\0'; } fclose(fp); |
De while waar het toevoegen waarschijnlijk fout gaat:
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
| while(keuze != 5) { if(keuze == 1) { aantalZinnen++; woorden = (relatie *)realloc(adres, aantalZinnen * sizeof(relatie)); adres = woorden; printf("\nVoer woord in: "); scanf("%s", woorden[aantalZinnen - 1].woord); printf("\nVoer vertaling in: "); scanf("%s", woorden[aantalZinnen - 1].vertaling); } else if(keuze == 2) { for(i = 0; i < aantalZinnen; i++) printf("Woord: %s\t\tVertaling: %s", woorden[i].woord, woorden[i].vertaling); } /*else if(keuze == 3) { }*/ printf("\nMaak nieuwe keuze: "); scanf("%i", &keuze); } |
Het terugschrijven naar het .txt bestand:
C:
1
2
3
4
5
| fp = fopen("file.txt", "w"); for(i = 0; i < aantalZinnen; i++) fprintf(fp, "%s %s", woorden[i].woord, woorden[i].vertaling); fclose(fp); |
De code ziet bij het toevoegen dus wel dat er een nieuw woord is met vertaling. Maar zet dit niet op een nieuwe regel.
Hopelijk heeft iemand een idee!
Alvast bedankt!