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

Rad sa fajlovima - C

[es] :: C/C++ programiranje :: C/C++ za početnike :: Rad sa fajlovima - C

[ Pregleda: 2246 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

LSDCracker
Obrisan Profil

Član broj: 161168
Poruke: 62



Profil

icon Rad sa fajlovima - C07.03.2009. u 17:07 - pre 184 meseci
Ovako, zelim da napisem program koji ce da ispisuje sve sto pise u fajlu na ekran.

Sad zelim da on to stampa polako koristeci funkciju:
Code:

void slow_print(char s[])
     {
       int i=0;
       while(!s[i]=='\0')
          {
            printf("%c",s[i]);
            i++;
            sleep(100);                
          } 
       printf("\n");
     }


Problem mi je ta manipulacija sa fajlovima.
npr kako da prepozna kraj linije, kraj fajla, da procita liniju i da je smesti u niz karaktera.
Moze neki kod, moz da mi pricate do sutra, ja to ne kapiram dok ne vidim kod...

Hvala.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Rad sa fajlovima - C07.03.2009. u 19:11 - pre 184 meseci
Citat:

[...] moz da mi pricate do sutra, ja to ne kapiram dok ne vidim kod...

To sto trazis u vezi otvaranja/zatvaranja datoteke, citanja sadrzaja i sl, nalazi se u svakoj knjizi za C, i odatle treba krenuti. Na forumu obicno dobijas samo neki detalj, a kompletnu sliku treba sagledati iz knjige. Mislim, glupo je za bazicne stvari osloniti se na znanje koje ces pokupiti samo sa strane.

RECIMO OTVARANJE DVE DATOTEKE, JEDNE ZA ULAZ DRUGE ZA UPIS:
Code:

#include <stdio.h>
#include <stdlib.h>

/* ocekivana najveca duzina stringa */
#define MAX_DUZINA_STRINGA 100

/* ocekivana najveci broj linija */
#define MAX_BROJ_LINIJA 100

int main()
{
    FILE *ulaz;
    FILE *izlaz;

    char fajl_ulaz[MAX_PATH];
    char fajl_izlaz[MAX_PATH];

    printf( "Unesite naziv ULAZ-nog fajla:" );
    scanf( "%s", &fajl_ulaz ); /* gets( fajl_ulaz ); */

    printf( "Unesite naziv IZLAZ-nog fajla:" );
    scanf( "%s", &fajl_izlaz ); /* gets( fajl_izlaz ); */

    ulaz = fopen( fajl_ulaz, "r+b" );
    if ( !ulaz )
    {
        printf( "Datoteka '%s' se ne moze otvoriti!\n", fajl_ulaz );
        return 1;
    }

    izlaz = fopen( fajl_izlaz, "w+b" );
    if ( !izlaz )
    {
        printf( "Datoteka '%s' se ne moze otvoriti!\n", fajl_izlaz );
        fclose( fajl_ulaz ); /* zatvori ulazni, jer je otvoren */
        return 1;
    }


    /* OVDE TREBA DA DODJU NEKE METODE CITANJA */
    /* KOJU METODU CES IZABRATI, ZAVISI OD ZADATAKA */
    /* DOLE CES NACI PRIMERE NEKIH METODA */


    fclose( izlaz );
    fclose( ulaz );

    return 0;
}


CITANJE DATOTEKE KARAKTER PO KARAKTER, ISPIS NA EKRAN, UPIS U DRUGU DATOTEKU:
Code:

char *karakter;
while( ( karakter = fgetc( ulaz ) ) != EOF )
{
    /* URADI NESTO */
    printf( "%c", karakter );
    fprintf( izlaz, "%c", karakter );
}


CITANJE DATOTEKE LINIJA PO LINIJA, ISPIS NA EKRAN, UPIS U DRUGU DATOTEKU:
Code:

char linija[MAX_DUZINA_STRINGA];
while ( fgets( linija, MAX_DUZINA_STRINGA, ulaz ) )
{
    /* URADI NESTO */
    printf( "%s", linija );
    fprintf( izlaz, "%s", linija );
}


CITANJE DATOTEKE I PUNJENJE STRUKTURE, FORMATA NA PRIMER (IME ADRESA GRAD):
Code:

int i=0;
while( !feof( ulaz ) && ( i<=MAX_BROJ_LINIJA ) )
{
    fscanf( ulaz, "%s%s%s", &objekat[i].osobina1, &objekat[i].osobina2, &objekat[i].osobina3 );
    i++;
}


E sad, koja je razlika izmedju "r", "r+b", "w", "w+b" moras pogledati u knjizi. Ja cu ti samo reci sa se odnosi na tumacenje kontrolnih kodova (sekvence) za kraj reda. Moze imati uticaja na ocekivani rezultat duzine procitanog stringa i sl.

 
Odgovor na temu

LSDCracker
Obrisan Profil

Član broj: 161168
Poruke: 62



Profil

icon Re: Rad sa fajlovima - C08.03.2009. u 13:35 - pre 184 meseci
Hvala puno!

Ovo citanje red po red je fantasticno. Bash mi je to trebalo.

Hvala jos jednom!
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Rad sa fajlovima - C

[ Pregleda: 2246 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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