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;
}
#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