Ich versuche, ein Programm zu erstellen, um zufällige Testfälle zu generieren. Ich habe ein Array von Strings (char **), die geordnet sind, und ich möchte sie randomisieren. Mein Ansatz besteht darin, zwei Elemente zufällig auszuwählen und sie zu tauschen. Allerdings bekomme ich immer einen Fehler und es scheint, als ob ich etwas Wissen verpasst habe.Austauschen von Elementen in einem Array von Zeichenfolgen
Probenarray (64 Elemente): {"1 2 3", "3 2 1", "4 5 6".....}
char ** randomizeOrder(char ** list, int size){
char temp[6];
temp[5] = '\0';
srand(time(NULL));
int count = 64;
int x, y;
while(count > 0){
fprintf(stderr, "Starting...\n");
x = rand() % 64;
y = rand() % 64;
strcpy(temp, list[x]);
fprintf(stderr, "Copying %s from Y to X\n", list[y]);
strcpy(list[x], list[y]);
fprintf(stderr, "Copying %s from temp to Y\n", temp);
strcpy(list[y], temp);
count--;
}
return list;
}
Es scheint für die ersten paar Elemente zu arbeiten, und dann beginnt das Lesen Müll. Die Elemente sind wie das Array malloziert, alle Elemente drucken einwandfrei. Irgendwelche Ideen, was schief geht?
Wie wird dieses Array deklariert und bevölkerten? –
Wenn Sie nur zwischen Strings wechseln, bin ich mir nicht sicher, warum Sie überhaupt 'strcpy' benötigen. Sie können einfach die Zeiger tauschen, was viel einfacher sein sollte. –
Das Array ist malloc'd, jedes Element ist malloc'd und dann verwende ich sprinf, um die Werte zu schreiben. http://pastebin.com/aRsAB8Wg – DAnsermino