Ik heb de volgende code:
Een gebruiker wordt net zolang om strings gevraagd totdat hij stop invoert. Het ingevoerde woord wordt in woord opgeslagen. Vervolgens wordt er geheugen gereserveerd ter grootte van het woord en wordt de string in woord gekopieerd naar de character pointer pc. ppc wordt gebruikt voor de opslag van de adressen van de beginletters van iedere string.
Wat gaat er goed:
Opslag.
Wat gaat er mis:
Het weer terugzetten op het scherm van de ingevoerde woorden. Gaat alleen goed bij een aantal van 3 of minder. Wat gaat er hier mis?? Ligt het aan realloc???
code:
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
| #include <stdio.h>
#include <string.h>
#include <malloc.h>
void ToonInvoer(char **ppc, int totaal);
void main()
{
char **ppc, *pc, woord[100];
int teller = 0;
ppc = (char**) malloc(sizeof(pc));
printf("Geef een aantal woorden, stop = stoppen\n");
printf("Geef een woord : ");
scanf("%s", woord);
while(strcmp(woord,"stop")!=0)
{
//Zolang ingevoerde woord geen "stop" is:
//dynamisch geheugen toewijzen aan pc
//lengte woord + stringafsluiter
pc = (char*) malloc(strlen(woord)+1);
//kopieren van woord naar pc
strcpy(pc,woord);
//grootte van geheugen benodigd voor pcc gelijk aan ...
ppc = (char**) realloc(ppc, sizeof(ppc)+sizeof(pc));
//pcc naar pc laten wijzen
ppc[teller] = pc;
printf("Geef nog een woord : ");
scanf("%s",woord);
teller++;
}
printf("\nAantal ingevoerde woorden : %d\n",teller);
printf("Ingevoerde woorden: ");
ToonInvoer(ppc,teller);
}
void ToonInvoer(char** ppc,int totaal)
{
int i;
for(i=0;i<totaal;i++)
{
printf("Woord %d : %s\n",i, *ppc);
ppc++;
}
} |
Een gebruiker wordt net zolang om strings gevraagd totdat hij stop invoert. Het ingevoerde woord wordt in woord opgeslagen. Vervolgens wordt er geheugen gereserveerd ter grootte van het woord en wordt de string in woord gekopieerd naar de character pointer pc. ppc wordt gebruikt voor de opslag van de adressen van de beginletters van iedere string.
Wat gaat er goed:
Opslag.
Wat gaat er mis:
Het weer terugzetten op het scherm van de ingevoerde woorden. Gaat alleen goed bij een aantal van 3 of minder. Wat gaat er hier mis?? Ligt het aan realloc???