markz88
07-02-2011, 11:17
Salve a tutti,
ho scritto questo codice che genera 1000 stringhe casuali e poi dovrebbe riordinarne 150 in un file a parte. Il codice è:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mylib.h>
#define elem 1000
int main() {
int i, j, lungstring, cont;
char v[20], stringhe[elem][21], filename[31];
FILE *fs, *bs;
srand(time(0));
/*CREAZIONE FILE DI TESTO DELLE STRINGHE DI MASSIMO 20 CARATTERI CIASCUNA*/
fs = fopen("stringhe.txt", "w");
for (i=0; i < elem; i++, lungstring = 0){
lungstring = (rand() % 19)+2;
for (j=0; j < lungstring; j++){
v[j] = rand_char();
v[lungstring]='\0';
}
fprintf(fs, "%s", v);
if (i < cont-1){
fprintf(fs, "\n");
}
}
fclose(fs);
printf("File contenente le stringhe casuali creato.\n");
/*SALVATAGGIO STRINGHE IN UN VETTORE*/
fs = fopen("stringhe.txt", "r");
for (i=0; i < elem; i++){
fscanf(fs, "%s", &stringhe[i][21]);
strcpy(sbackup[i],stringhe[i]);
}
/*ORDINAMENTO DELLE STRINGHE*/
cont = 150; //numero delle stringhe da ordinare
bubblesorts(stringhe, cont);
sprintf(filename, "bubblesort%d.txt", cont);
bs = fopen(filename, "w");
/*USO DEL BUBBLESORT PER LE STRINGHE*/
fprintf(bs, "STUDIO DELL'ALGORITMO BUBBLESORT SULLE STRINGHE:\n");
for (i=0; i < cont; i++)
fprintf(bs, "%s\n", stringhe[i]);
fclose(bs);
system("pause");
return 0;
}
Ma non funziona xD cioè mi spiego meglio.. se cont = 1000 il programma funziona e mi riordina le 1000 stringhe, ma se cont = 150 (o qualsiasi numero minore di 1000) il programma va in crash.. perchè?
SCUSATEMI HO RISOLTO!
ho scritto questo codice che genera 1000 stringhe casuali e poi dovrebbe riordinarne 150 in un file a parte. Il codice è:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mylib.h>
#define elem 1000
int main() {
int i, j, lungstring, cont;
char v[20], stringhe[elem][21], filename[31];
FILE *fs, *bs;
srand(time(0));
/*CREAZIONE FILE DI TESTO DELLE STRINGHE DI MASSIMO 20 CARATTERI CIASCUNA*/
fs = fopen("stringhe.txt", "w");
for (i=0; i < elem; i++, lungstring = 0){
lungstring = (rand() % 19)+2;
for (j=0; j < lungstring; j++){
v[j] = rand_char();
v[lungstring]='\0';
}
fprintf(fs, "%s", v);
if (i < cont-1){
fprintf(fs, "\n");
}
}
fclose(fs);
printf("File contenente le stringhe casuali creato.\n");
/*SALVATAGGIO STRINGHE IN UN VETTORE*/
fs = fopen("stringhe.txt", "r");
for (i=0; i < elem; i++){
fscanf(fs, "%s", &stringhe[i][21]);
strcpy(sbackup[i],stringhe[i]);
}
/*ORDINAMENTO DELLE STRINGHE*/
cont = 150; //numero delle stringhe da ordinare
bubblesorts(stringhe, cont);
sprintf(filename, "bubblesort%d.txt", cont);
bs = fopen(filename, "w");
/*USO DEL BUBBLESORT PER LE STRINGHE*/
fprintf(bs, "STUDIO DELL'ALGORITMO BUBBLESORT SULLE STRINGHE:\n");
for (i=0; i < cont; i++)
fprintf(bs, "%s\n", stringhe[i]);
fclose(bs);
system("pause");
return 0;
}
Ma non funziona xD cioè mi spiego meglio.. se cont = 1000 il programma funziona e mi riordina le 1000 stringhe, ma se cont = 150 (o qualsiasi numero minore di 1000) il programma va in crash.. perchè?
SCUSATEMI HO RISOLTO!