Witam
Mógłby mi ktoś podpowiedzieć co robię źle ?
Założeniem było napisanie program który będzie mieszał plik tekstowy np biorąc po trzy linie
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#define BUFSIZE 8000
#define MAX_LINE 10000
int main(int argc, char **argv){
int i, j, j2;
char buf[BUFSIZE];
char *tab_napisow [MAX_LINE];
FILE *in = argc > 1 ? fopen(argv[1], "r") : stdin ;
int x = argc > 2 ? atoi(argv[2]) : 3;
int los, wykonane_petle, ilosc_przedzialow;
char tmp[BUFSIZE];
if (in == NULL)
printf("Nie moge odczytac pliku");
else {
i = 0;
while (fgets(buf, BUFSIZE, in) != NULL) {
if (i < MAX_LINE) {
if (( tab_napisow[i] = malloc ((strlen(buf) + 1 ) * sizeof( char ) )) == NULL ) {
fprintf(stderr, "blad przydzielania pamieci \n");
return EXIT_FAILURE;
}
strcpy(tab_napisow[i], buf);
i++;
}
else {
fprintf( stderr, "blad - zbyt wiele lini wejscia");
return EXIT_FAILURE;
}
}
fclose(in);
for (j = 0; j<i; j++)
printf("%s",tab_napisow[j]);
srand(time(NULL));
ilosc_przedzialow = (i + 1) / x;
wykonane_petle = 1;
for (j = 0; j < (ilosc_przedzialow - 1); j++) {
los =wykonane_petle + rand() % ( ilosc_przedzialow - 1);
for (j2 = 0; j2 < x; j2++) {
strcpy(tmp, tab_napisow[j * x + j2]);
strcpy(tab_napisow[j * x + j2], tab_napisow[los * x + j2]);
strcpy(tab_napisow[los * x + j2], tmp);
}
wykonane_petle++;
}
}
return EXIT_SUCCESS;
}