Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Cudni compiler error i warning

[es] :: C/C++ programiranje :: C/C++ za početnike :: Cudni compiler error i warning

[ Pregleda: 1726 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

d3x
Sarajevo

Član broj: 39445
Poruke: 36
*.BH-CabelNET.GlobalNET.ba.



Profil

icon Cudni compiler error i warning30.12.2006. u 19:43 - pre 210 meseci
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
 
Odgovor na temu

SuPeR_MaSteR
Marko Stamenković

Član broj: 88590
Poruke: 115
86.58.20.*



Profil

icon Re: Cudni compiler error i warning31.12.2006. u 13:21 - pre 210 meseci
Nemam sad vremena ovo da sredjujem ali primetio sam odmah par gresaka:
Code:
scanf("%s", &imeUlazna);

Posto je string u pitanju, ne treba ti address-of (operator&).
Takodje i za imeIzlazni string..
Code:

printf("Unesite ime izlazne datoteke:");
....
FILE* fpFile = fopen(imeUlazna, "r");

U C-u varijable trebas deklarisati na pocetku bloka, znaci u tvom slucaju, na pocetku definisanja funkcije.
Code:
while (c = fgetc(fpFile)!=EOF)

Mozda je sigurnije da koristis feof() funkciju za odredjivanje kraja file-a.
Posle provere, zatvori fajl ili ga u funkciji sortiraj ne otvaraj ponovo.
Code:
void sortiraj(int brojStringova, char* imeUlazna, char* imeIzlazna)
{
   ....
    struct str stringovi[brojStringova];
   ...
}

Varijabla brojStringova bi morala biti konstanta.
Code:
char temp[50] = stringovi[j+1].linija;

Stringove ne mozes ovako dodeljivati, ili kroz ciklus, ili upotrebom funkcije strcpy() iz header-a string.h
Code:
return;

Ako ti je funkcija tipa void, onda ona nema povratnu vrednost, tj. nepravilno je koristiti naredbu return.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Cudni compiler error i warning

[ Pregleda: 1726 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.