FAJL SE OTVARA FUNKCIJOM:  

 FILE * fopen(char *ime, char *mod);   

Ova funkcija prihvata string sa putanjom do fajla (ime), kao i string (mod) koji definise način rada sa fajlom. Mod može biti:   

"r" - fajl se otvara za čitanje (mora da postoji)   

"w" - fajl se otvara za pisanje (kreira se ako ne postoji, a ako postoji, njegov sadržaj se briše)   

"a" - fajl se otvara za dopisivanje (kreira se ako ne postoji. Prilikom svakog pisanja sadržaj se dodaje na kraj fajla).

 Nakon završetka rada sa fajlom, treba ga zatvoriti sledećom funkcijom:      

fclose(f);

gde je f FILE pokazivač.

ARGUMENTI KOMANDNE  LINIJE

Definišemo parametre funkcije main: ­

Int argc - ovaj parametar prilikom pokretanja programa  dobija vrednost broja argumenata koje je korisnik prilikom poziva naveo.  Pri tom se i ime programa broji kao argument komandne linije. U  primeru ispod argc će biti postavljeno na 3. ­

Naziv_programa  ulaz.txt   izlaz.txt

char *argv -­pokazivač na char koji sadrži adresu  prvog u nizu pokazivača na karaktere. Svaki od tih pokazivača na  karaktere  sadrži  adresu  odgovarajućeg  stringa  koji  sadrži  argument  komandne  linije.  Npr.  u  gornjem  primeru,  argv[0]  će  nam pokazivati na string " Naziv_programa ", argv[1] će nam pokazivati na  string "ulaz.txt", argv[2] će nam pokazivati na string "izlaz.txt". Dakle,  niz  pokazivača  na  čiji  prvi  član  pokazuje  argv  je  dužine  upravo argc.

 

Zadatak 1 - Napisati program koji prikazuje tekst iz fajla NekiFajl.txt koji se nalazi u istom folderu.

 

#include <stdio.h>

void main(){

char str[70];

FILE *f;

if((f=fopen("NekiFajl.txt","r"))==NULL){

printf("\nNe moze da se otvori fajl");

exit(1);

}

while(fgets(str,70,f)!=NULL){

puts(str);

}

fclose(f);

}

 

 

Zadataka 2 – Napisati program koji upisuje u fajl brojevi.txt sve parne brojeve manje od 100.

 

#include <stdio.h>

#include <conio.h>

void main(void){

FILE *fajl;

int i;

 

 if ((fajl = fopen("brojevi.txt", "w"))==NULL) {

    printf("Fajl se ne moye pripremiti za upis podataka \n");

    getch(); /*stavljamo getch da bi videli poruku pre izlaza iz programa */

    exit(1);

}

 

 //upisujemo parne brojeve manje od 100 u fajl

 for (i=1;i<=100;i++){

        if (i%2==0){

            fprintf( fajl, "%d\n", i);

        }

 }

 

 //zatvaramo fajl

fclose(fajl);

}

 

Zadatak 3 – Napisati program koji otvara tekstualnu datoteku i broji koliko puta se pojavio znak a, koliko puta se pojavio znak b i koliko puta se pojavio znak c. Broj pojavljivanja slova a, slova b i slova c zapisati u novu tekstualnu datoteku u obliku:

Slova a ima: ...

Slova b ima: ...

Slova c ima: ...

 

Imena datoteka se zadaju kao parametri programa u komandnom promptu.

 

#include <stdio.h>

#include <stdlib.h>

#include <conio.h> /* koristimo biblioteka zbog funkcije getch() */

 

int main(int argc, char *argv[]){

    FILE *file1, *file2; /* pokazivaci na fajlove */

    int brojacA=0, brojacB=0, brojacC=0;

 

char ch; /*promenjivu ch koristimo za citanje jednog znaka iz fajla */

 

/* proverava da li je ispravan broj parametara */

 

if(argc !=3 ) {

    printf("Morate uneti prvi i drugi fajl");

    getch(); /*stavljamo getch da bi videli poruku pre izlaza iz programa */

    exit(1);

}

 

/* otvaramo prvi fajl (argv[1]) u modu za citanje */

if ((file1 = fopen(argv[1], "r"))==NULL) {

    printf("Fajl se ne moze otvoriti \n");

    getch(); /*stavljamo getch da bi videli poruku pre izlaza iz programa */

    exit(1);

}

 

/* otvaramo drugi fajl (argv[2]) u modu za pisanje */

if ((file2 = fopen(argv[2], "w"))==NULL) {

    printf("Greska. Fajl se ne moze otvoriti u modu za pisanje. \n");

    getch();

    exit(1);

}

 

while ((ch = getc(file1)) !=EOF) /* prolazimo kroz prvi fajl */

{

    if ((ch== 'a') || (ch=='A'))

    {

        brojacA++;

    }

    if ((ch== 'b') || (ch=='B'))

    {

        brojacC++;

    }

    if ((ch== 'c') || (ch=='C'))

    {

        brojacC++;

    }

}

 

fprintf (file2,"Slova a ima: %d\n",brojacA);

fprintf (file2,"Slova b ima: %d\n",brojacB);

fprintf (file2,"Slova c ima: %d\n",brojacC);

 

fclose(file1);

fclose (file2);

return 1;

}

Poslednja izmena: петак, 30. септембар 2022, 17:55