[ Fidelito_Castro @ 29.12.2007. 19:39 ] @
Krenuo sam malo da provezbam rad sa datotekama i nesto mi ne ide.
E ovako uzeo sam najednostavniji primer.
Pokusao sam da napisem kod koji ce procitati fajl koji korisniki bude uneo i nakon toga izracunati broj pojavljivanja karaktera
'a' u tom fajlu.Taj rezultat pojavljivanja slova 'a' treba upisati u fajl "Slovo.txt".

Evo koda:

Code:

*Program koji ce na oosnovu izabranog fajla procitati sadrzaj */
/* i ispisati broj pojavljivanja slova a u fajl "Slovo.txt" */

#include<stdio.h>
#define MAKS 100


int main(void)
{
    FILE *dat;//pokazivac na strukturni tip
    FILE *pok;//pokazivan na strukturni TIP 

    char putanja[MAKS + 1];//smestanje putanje fajla
    int slovo;
    int a;
    a=0;

    //Unos putanje
    printf("Putanja:\n");
    gets(putanja);

    //Pristup fajlovima
    dat=fopen(putanja,"r");
    pok=fopen("Slovo.txt","a+");

    if(dat == NULL)
    {
        printf("Pogresna putanja\n");
    }
    else
    {
        while( (slovo = fgetc(dat)) != EOF)
        {
            if(slovo == 'a')
                a++;

        }
        fprintf(pok,"******************\n");
        fprintf(pok,"Slovo a se pjavilo = %d \n",a);
        fprintf(pok,"******************\n");
    }

    fclose(dat);
    fclose(pok);

    return 0;
}


[ xeron @ 29.12.2007. 21:27 ] @
Kod mene radi sve ok ali sa malom ispravkom. Umjesto pok=fopen("Slovo.txt","a+"); ja sam stavio u write (w) mode
pok=fopen("Slovo.txt","w");
Prvo sam napravio ulaznu datoteku /home/muamer/a.txt sa sl. sadrzajem:
Citat:

a.txt:
aaaaaaaaaa

Nakon pokretanja programa sam unio putanju:
Citat:

putanja: /home/muamer/a.txt

i kao izlaznu datoteku dobijam:
Citat:

Slovo.txt
**************************
Slovo a se pojavilo = 10
**************************

Ova izlazna datoteka ce ti se pojaviti na istom mjestu gdje ti se nalazi i tvoj program, bez obzira gdje ti smjestio svoju ulaznu datoteku.
[ Fidelito_Castro @ 30.12.2007. 09:26 ] @
Thanks!
[ laki_srt @ 02.01.2008. 00:11 ] @
Jedno pitanje:
Dali "putanja" iz:
Citat:

//Unos putanje
printf("Putanja:\n");
gets(putanja);

//Pristup fajlovima
dat=fopen(putanja,"r");
pok=fopen("Slovo.txt","a+");

predstavlja adresu gde se nalazi fajl npr: C:\\PROGRAM\\...
ili predstavlja naziv fajla?

[ xeron @ 02.01.2008. 18:50 ] @
Pa ako ti se taj file nalazi na istoj lokaciji gdje se nalazi i tvoj program onda je dovoljno kao putanju staviti ime file-a.
U suprotnom ako se tvoj ulazni file nalazi npr. na c:/Foo/file.txt, a tvoj program na d:/Program/program.exe kao putanju ces morati navesti
c:/Foo/file.txt.
[ laki_srt @ 02.01.2008. 23:09 ] @
Hvala na objasnjenju.
A kad sacuvavam datoteku kako da mu upisem putanju gde da je sacuva?
Npr hocu datoteku fajl.txt da smestim u folder: C:\Datoteke\ sta onda upisem u funkciju fopen?
Ja sam pokusavo nesto ovako:
Code:
pok=fopen("C:\Datoteke\fajl.txt","w"); 

ali ovo definitivno nevalja
[ butcher87 @ 03.01.2008. 04:44 ] @
Pri samom otvaranju datoteke za upisivanje, ona se sacuvava na navedenoj lokaciji.

Npr:
Code:

pok=fopen("c:\\program files\\datoteke\\datoteka.txt","w");


U ovom slucaju, datoteka ce biti sacuvana na lokaciji: c:\program files\datoteke\
[ laki_srt @ 03.01.2008. 09:38 ] @
Hvala