[ d3x @ 30.12.2006. 19:43 ] @
evo jednog programa koji sam napravio prije par minuta. program uzima stringove iz datoteke i sortira ih abecedno i onda sortirane izbacuje u novu datoteku. u main funkciji se racuna koliko ima linija unutar datoteke, tj koliko ima stringova. ulazna datoteka je u formatu aaaaaaaa bbbsbsbbsb cafaagafascca ovi stringovi treba da se sortiraju po abecedi ebz obzira na velika i mala slova (stricmp). Pogledajte code ja ne mogu da odgonetnem u cemu je problem sa ovim. Code: #include <stdio.h> #include <stdlib.h> #include <string.h> struct str { char linija[50]; }; void sortiraj(int, char*, char*); int main() { int i; char c, imeUlazna[20], imeIzlazna[20]; printf("Unesite ime ulazne datoteke:"); scanf("%s", &imeUlazna); printf("Unesite ime izlazne datoteke:"); scanf("%s", &imeIzlazna); FILE* fpFile = fopen(imeUlazna, "r"); if (fpFile == NULL) { printf("Greska pri otvaranju fajla %s.", imeUlazna); return 0; } while (c = fgetc(fpFile)!=EOF) { if (c == '\n') i++; } sortiraj(i, imeUlazna, imeIzlazna); getch(); return 0; } void sortiraj(int brojStringova, char* imeUlazna, char* imeIzlazna) { int i, j; char cBuffer[50]; struct str stringovi[brojStringova]; for (i = 0; i<brojStringova; i++) for (j = 0; j<50; j++) stringovi[i].linija[j] = '\0'; FILE* fpFile = fopen(imeUlazna, "r"); if (fpFile == NULL) { printf("Greska pri otvaranju fajla %s.", imeUlazna); return; } i = 0; while (fscanf(fpFile, "%s", &cBuffer)!=EOF ) { stringovi[i].linija = cBuffer; i++; } fclose(fpFile); for (i = 0; i<brojStringova; i++) for (j = 0; j<brojStringova-i-1; j++) { if (stricmp(stringovi[j+1].linija, stringovi[j].linija) < 0) { char temp[50] = stringovi[j+1].linija; stringovi[j+1].linija = stringovi[j].linija; stringovi[j].linija = temp; } } fpFile = fopen(imeIzlazna, "w"); if (fpFile == NULL) { printf("Greska pri kreiranju fajla %s.", imeIzlazna); return; } for (i = 0; i<brojStringova; i++) fprintf(fpFile, "%s\n", stringovi[i].linija); fclose(fpFile); printf("\nStringovi su sortirani."); return; } hvala unaprrijed |