ik moet voor de avondschool een opdracht maken die gebruik maakt van het qsort commando.
het eerste deel heb ik al gedaan. nl het inlezen van een aantal namen, gebruik makende van pointers en geheugenallocatie. Maar het laatste deel lukt me niet: qsort gebruiken in combinatie met pointers.
In het programma mogen we nog geen gebruik maken van type def.
Ik zit precies vast met de pointers. Wat doe ik verkeerd?
het eerste deel heb ik al gedaan. nl het inlezen van een aantal namen, gebruik makende van pointers en geheugenallocatie. Maar het laatste deel lukt me niet: qsort gebruiken in combinatie met pointers.
In het programma mogen we nog geen gebruik maken van type def.
Ik zit precies vast met de pointers. Wat doe ik verkeerd?
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
47
48
49
50
51
52
| #include "stdafx.h" #include <malloc.h> #include <string.h> #include <cstdlib> #define MAX_NAAM_LENGTE 40 char** readStudents(char **studentList, int *aantal); int compare_strings (const void* a, const void* b ) { char*string1=(char*)a; char*string2=(char*)b; printf("\n %d %x",string1,string1); return (strcmp ( string1, string2)); } int _tmain(int argc, _TCHAR* argv[]){ char **snt=(char**)(malloc(1*sizeof(char*))); int aantalStudentenSnt=0; snt=readStudents(snt,&aantalStudentenSnt); printf("\nvoor het sorteren\n----------------------\n"); for(int i=0;i<aantalStudentenSnt;i++){ printf("%d: %s %x , %d\n",(i),snt[i]); } printf("\nsnt pointer %x , %d\n",snt,snt); //sorteren qsort( snt[0], aantalStudentenSnt , sizeof(char[8]), compare_strings ); printf("\nNa het sorteren\n----------------------\n"); for(int i=0;i<aantalStudentenSnt;i++){ printf("%d: %s\n",(i+1),snt[i]); } return 0; } char** readStudents(char **studentList, int *aantal){ int NumberOfStudents=*aantal; printf("geef een naam in, CTRL+z om te stopppen :"); char buffer[MAX_NAAM_LENGTE]; while (gets(buffer)){ int naamLengte=strlen(buffer); if(NumberOfStudents>0){ studentList=(char**)(realloc(studentList, ((NumberOfStudents+1)*sizeof(char*)))); } studentList[NumberOfStudents]=(char*)malloc(sizeof (naamLengte+1)); strcpy(studentList[NumberOfStudents], buffer); NumberOfStudents++; printf("Geef de volgende naam in (ctrl+z om te stoppen):"); } *aantal=NumberOfStudents; return studentList; } |