You are on page 1of 34

FTI – Teknikat dhe gjuhët e programimit

Teknikat dhe Gjuhët e Programimit


(Leksioni nr. 10)

Fakulteti i Teknologjisë së Informacionit

Departamenti i Inxhinierisë Informatike 1 2020


Përmbajta
• File-at dhe llojet e tyre
FTI – Teknikat dhe gjuhët e programimit

• Veprimet me file-at
• Hapja dhe mbyllja e file-eve
• Leximi dhe shkrimi i file-eve tekst
• Leximi dhe shkrimi i file-eve binar
• File-at e përkohshëm
• Shembull me përdorimin e file-eve

2020 Departamenti i Inxhinierisë Informatike 2


File-at dhe llojet e tyre
• Një file është një bashkësi byte-sh te vendosura ne memorie sekondare te
organizuara sipas filesisteme-ve (FAT, FAT32,NTFS,exFAT, ext2,ext3, etj)
FTI – Teknikat dhe gjuhët e programimit

• Një file përmban emrin dhe prapashtesën


• Është më e ngadaltë se variablat të cilët alokohen ne RAM por ofrojnë
mundësinë që të dhënat të jenë të përdorshme edhe pas mbylljes së programit
• Ndahen në dy lloje:
– File tekst
– File binar

2020 Departamenti i Inxhinierisë Informatike 3


Veprimet me file-at
• Ndërtimi i një file-i te ri
FTI – Teknikat dhe gjuhët e programimit

• Hapja e një file-i ekzistues


• Mbyllja e një file
• Leximi nga një file
• Shkrimi në një file

2020 Departamenti i Inxhinierisë Informatike 4


Hapja dhe mbyllja e file-eve
• Deklarimi i fileve behet me anë të pointerave si në vijim
FTI – Teknikat dhe gjuhët e programimit

FILE *fptr;

• Hapja e fileve behet me anë të funksionit fopen() si në vijim


ptr = fopen("fileopen","mode");

• Mbyllja e file-eve behet me anë të funksioneve fclose()

fclose(fptr);

2020 Departamenti i Inxhinierisë Informatike 5


Hapja dhe mbyllja e file-eve

Mënyra Përshkrimi Në rast se nuk ekziston


FTI – Teknikat dhe gjuhët e programimit

r / rb Hap file për lexim tekst /binar . fopen() kthen NULL.


w / wb Hap file për shkrim /binar. Nëse nuk ekziston ndërtohet, përndryshe e
mbishkruan.
a / ab Hap për shtim ne fund tekst/binar. Nëse nuk ekziston ndërtohet.
r+/rb+ Hap për shkrim dhe lexim tekst/binar. fopen() kthen NULL.
w+/ wb+ Hap file për shkrim dhe lexim. Nëse nuk ekziston ndërtohet, përndryshe e
mbishkruan.
a+/ab+ Hap file për lexim dhe shtim. Nëse nuk ekziston ndërtohet.

2020 Departamenti i Inxhinierisë Informatike 6


Leximi dhe shkrimi i file-eve tekst
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

int main(){
int num;
FILE *fptr;
fptr = fopen("C:\\c2020\\program.txt","w");
if(fptr == NULL) {
printf("Gabim ne hapjen e file!");
return 0; }
printf("Jepni nje numer : ");
scanf("%d",&num);
fprintf(fptr,"%d",num);
fclose(fptr);
return 0;
}

2020 Departamenti i Inxhinierisë Informatike 7


Leximi dhe shkrimi i file-eve tekst
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 8


Leximi dhe shkrimi i file-eve tekst
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

int main(){
int num;
FILE *fptr;
if ((fptr = fopen("C:\\c2020\\program.txt","r")) == NULL){
printf("Gabim ne hapjen e file-it.");
return 0;}
fscanf(fptr,"%d", &num);
printf("Vlera e lexuar nga file =%d", num);
fclose(fptr);
return 0;}

2020 Departamenti i Inxhinierisë Informatike 9


Leximi dhe shkrimi i file-eve tekst
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

#include <string.h>
const int LENGTH = 80;
int main(void){
char mystr[LENGTH];
int lstr = 0; int mychar = 0;
FILE *pfile = NULL;
char *filename = "C:\\c2020\\myfile.txt";
printf("\nShkruani nje shprehje :\n");
gets(mystr);
if(!(pfile = fopen(filename, "w"))){
printf("gabim ne hapjen e file-it %s.", filename);
return 0;}

2020 Departamenti i Inxhinierisë Informatike 10


Leximi dhe shkrimi i file-eve tekst
lstr = strlen(mystr);
FTI – Teknikat dhe gjuhët e programimit

for(int i = lstr-1 ; i >= 0 ; i--)


fputc(mystr[i], pfile);
fclose(pfile);
if(!(pfile = fopen(filename, "r"))){
printf(" gabim ne hapjen e file-it %s.", filename);
return 0; }

while((mychar = fgetc(pfile)) != EOF)


putchar(mychar);
fclose(pfile);
return 0;
}

2020 Departamenti i Inxhinierisë Informatike 11


Leximi dhe shkrimi i file-eve tekst
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 12


Funksione për file-et tekst
• int fputs(char *pstr, FILE *pfile);
FTI – Teknikat dhe gjuhët e programimit

• char *fgets(char *pstr, int nchars, FILE *pfile);


• fprintf(pfile, "%12d%12d%14f", num1, num2, fnum1);
• fscanf(pfile, "%12d%12d%14f", &num1, &num2, &fnum1);

2020 Departamenti i Inxhinierisë Informatike 13


Leximi dhe shkrimi i file-eve binar
• fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
FTI – Teknikat dhe gjuhët e programimit

– ptr : Adresa e të dhënave që do shkruhen ne file


– size : Madhësia në byte e secilit element që shkruhet
– nmemb : Numri i elementeve që do shkruhet ku secili është me size byte
– stream : file ku do behet shkrimi
– Kthen nr e elementeve që është shkruar dhe nëse nuk është sa nmemb nënkupton që ka pasur
probleme

• fread(void *ptr, size_t size, size_t nmemb, FILE *stream)


– ptr : Adresa ku do te vendosen të dhënat që do lexohen
– size : Madhësia në byte e secilit element që lexohet
– nmemb : Numri i elementeve që do lexohet ku secili është me size byte
– stream : file ku do behet leximi
– Kthen nr e elementeve që është lexuar dhe nëse nuk është sa nmemb nënkupton që ka pasur probleme

2020 Departamenti i Inxhinierisë Informatike 14


Leximi dhe shkrimi i file-eve binar
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

struct threeNum{ int n1, n2, n3;};


int main(){
int n;
struct threeNum num;
FILE *fptr;
if ((fptr = fopen("C:\\c2020\\program.bin","wb")) == NULL){
printf("Gabim ne hapjen e file.");
return 0;}
for(n = 1; n < 5; ++n) {
num.n1 = n; num.n2 = 5*n;
num.n3 = 5*n + 1;
fwrite(&num, sizeof(struct threeNum), 1, fptr);
}
fclose(fptr);
return 0;}

2020 Departamenti i Inxhinierisë Informatike 15


Leximi dhe shkrimi i file-eve binar
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

struct threeNum{ int n1, n2, n3;};


int main(){
int n;
struct threeNum num;
FILE *fptr;
if ((fptr = fopen("C:\\c2020\\program.bin","rb")) == NULL){
printf("Gabim ne hapjen e file.");
return 0;}
for(n = 1; n < 5; ++n) {
fread(&num, sizeof(struct threeNum), 1, fptr);
printf("n1: %d\tn2: %d\tn3: %d\n", num.n1, num.n2, num.n3);
}
fclose(fptr);
return 0;
}

2020 Departamenti i Inxhinierisë Informatike 16


Leximi dhe shkrimi i file-eve binar
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 17


fseek()
• fseek(FILE * stream, long int offset, int whence);
FTI – Teknikat dhe gjuhët e programimit

– Bën të mundur spostimin e kursorit në një file


– Stream : është parametri i një file te hapur
– Offset : është numri i byte-ve që do të lëvizë kursori
– Whence : referenca nga ku behet lëvizja që mund të marrë vlerat
– SEEK_SET : kursori lëviz nga fillimi i file-it
– SEEK_END : kursori lëviz nga fundi i file-it
– SEEK_CUR : kursori lëviz nga pozicioni aktual i file-it

• long int ftell(FILE *stream)


– Kthen vlerën e pozicionit te kursorit në një file

2020 Departamenti i Inxhinierisë Informatike 18


Leximi dhe shkrimi i file-eve binar
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

struct threeNum{int n1, n2, n3;};


int main(){
int n; struct threeNum num;
FILE *fptr;
if ((fptr = fopen("C:\\c2020\\program.bin","rb")) == NULL){
printf("Gabim ne hapjen e file.");
return 0;}
fseek(fptr, -sizeof(struct threeNum), SEEK_END);
for(n = 1; n < 5; ++n){
fread(&num, sizeof(struct threeNum), 1, fptr);
printf("n1: %d\tn2: %d\tn3: %d\n", num.n1, num.n2, num.n3);
fseek(fptr, -2*sizeof(struct threeNum), SEEK_CUR); }
fclose(fptr);
return 0;
}

2020 Departamenti i Inxhinierisë Informatike 19


Leximi dhe shkrimi i file-eve binar
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 20


Shembull
/*
-- Lexim te dhënash nga file
FTI – Teknikat dhe gjuhët e programimit

-- Regjistrim te dhënash ne file


-- Regjistrim skuadre
-- Fshirje Skuadre
-- Fshirje rezultatesh
-- Regjistrim rezultati
-- paraqit rezultate
*/
#include <stdio.h>
#include <string.h>
#include <conio.h>

int nr_skuadra=0;
int nr_rez=0;
char fn_s[250]="skuadra.dat";
char fn_r[250]="ndeshje.dat";

2020 Departamenti i Inxhinierisë Informatike 21


Shembull
struct skuadra{
int id;
FTI – Teknikat dhe gjuhët e programimit

char emri[30];
char adresa[50];
char qyteti[50];
} s[20];

struct ndeshje{
int skuadra_p_id;
int skuadra_v_id;
int shenuar;
int pesuar;
int java;
} n[380];

2020 Departamenti i Inxhinierisë Informatike 22


Shembull
void menu()
{
FTI – Teknikat dhe gjuhët e programimit

printf("\n=============================\n");
printf("\n Detyre Kursi");
printf("\n 1 - Lexo te dhenat ");
printf("\n 2 - Regjistrim skuadre");
printf("\n 3 - Fshirje skuadre");
printf("\n 4 - Ndeshje ");
printf("\n 5 - Fshirje Rezultati ");
printf("\n s - Save ");
printf("\n p - Paraqit rezultate ");
printf("\n d - Dalja");
printf("\n-----------------------------");
printf("\n Zgjedhja : ");
}

2020 Departamenti i Inxhinierisë Informatike 23


Shembull
void lexo(){
FTI – Teknikat dhe gjuhët e programimit

FILE *f;
f=fopen(fn_s,"rb");
if (f==NULL){
printf("\n \n Gabim ne file");
return;}
nr_skuadra=0;
while (fread(&s[nr_skuadra],sizeof(struct skuadra),1,f)){nr_skuadra++;}
fclose(f);
f=fopen(fn_r,"rb");
if (f==NULL){
printf("\n \n Gabim ne file");
return;}
nr_rez=0;
while (fread(&n[nr_rez],sizeof(struct ndeshje),1,f)){ nr_rez++;}
fclose(f);}

2020 Departamenti i Inxhinierisë Informatike 24


Shembull
void save(){
FILE *f;
FTI – Teknikat dhe gjuhët e programimit

f=fopen(fn_s,"wb");
if (f==NULL){
printf("\n \n Gabim ne file");
return;}
for(int i=0;i<nr_skuadra; i++){
fwrite(&s[i],sizeof(struct skuadra),1,f);}

fclose(f);
f=fopen(fn_r,"wb");
if (f==NULL){
printf("\n \n Gabim ne file");
return;}
for(int i=0;i<nr_rez; i++) {
fwrite(&n[i],sizeof(struct ndeshje),1,f);}
fclose(f);}

2020 Departamenti i Inxhinierisë Informatike 25


Shembull
void regjistro_skuader(){
FTI – Teknikat dhe gjuhët e programimit

int id_tmp;
printf("\n Jepni ID :"); scanf("%d",&id_tmp);
for(int i=0; i<nr_skuadra;i++){
if (id_tmp==s[i].id){
printf("Ekziston nje skuader me kete id.");
return;}
}
s[nr_skuadra].id=id_tmp;
printf("\nJepni Emrin e skuadres:");
scanf("%s",s[nr_skuadra].emri);
printf("\n Jepni Adresen :"); scanf("%s",s[nr_skuadra].adresa);
printf("\n Jepni qytetin :");scanf("%s",s[nr_skuadra].qyteti);
nr_skuadra++;}

2020 Departamenti i Inxhinierisë Informatike 26


Shembull
void fshi_skuader(){
int id;
FTI – Teknikat dhe gjuhët e programimit

printf("\n\n Fshirje Skuadre");


printf("\nID skuadra :");scanf("%d",&id);
for(int i=0;i<nr_skuadra; i++){
if (s[i].id == id){
for (int j=i; j<nr_skuadra-1;j++)
s[j]=s[j+1];
nr_skuadra--;
printf("\n Fshirja perfundoi me sukses.");
return; }
printf("\n Fshirja nuk perfundoi me sukses.");
}
}

2020 Departamenti i Inxhinierisë Informatike 27


Shembull
void regjistrim_rezultati(){
int id_p;
FTI – Teknikat dhe gjuhët e programimit

printf("\n Jepni ID pritese :"); scanf("%d",&id_p);


int kushti=0;
for(int i=0; i<nr_skuadra;i++){
if (id_p==s[i].id){
kushti=1;
break;}
}
if (kushti==0){
printf("Nuk ekziston nje skuader me kete id.");
return;}

int id_v;
printf("\n Jepni ID vizitore :"); scanf("%d",&id_v);
kushti=0;

2020 Departamenti i Inxhinierisë Informatike 28


Shembull
for(int i=0; i<nr_skuadra;i++) {
if (id_v==s[i].id){
FTI – Teknikat dhe gjuhët e programimit

kushti=1;
break;}
}
if (kushti==0){
printf("Nuk ekziston nje skuader me kete id.");
return;}
if (id_p==id_v){
printf("Eshte e njejta skuader.");
return;}

n[nr_rez].skuadra_p_id=id_p;
n[nr_rez].skuadra_v_id=id_v;

2020 Departamenti i Inxhinierisë Informatike 29


Shembull
printf("Nr shenuar : ");
scanf("%d", &n[nr_rez].shenuar );
FTI – Teknikat dhe gjuhët e programimit

printf("Nr pesuar : ");


scanf("%d", &n[nr_rez].pesuar );

printf("Nr java : ");


scanf("%d", &n[nr_rez].java );
nr_rez++;
}

2020 Departamenti i Inxhinierisë Informatike 30


Shembull
void fshirje_rezultati(){
FTI – Teknikat dhe gjuhët e programimit

int id_p; int id_v;


printf("\n Jepni ID pritese :"); scanf("%d",&id_p);
for(int i=0; i<nr_skuadra;i++){
if (id_p==s[i].id){
printf("Ekziston nje skuader me kete id."); return;}
}
printf("\n Jepni ID vizitore :");scanf("%d",&id_v);
for(int i=0; i<nr_skuadra;i++){
if (id_v==s[i].id){
printf("Ekziston nje skuader me kete id."); return;}
}
if (id_p==id_v){ printf("Eshte e njejta skuader."); return;}

2020 Departamenti i Inxhinierisë Informatike 31


Shembull
for (int i=0; i<nr_rez;i++){
if (n[i].skuadra_p_id==id_p && n[i].skuadra_v_id==id_v){
FTI – Teknikat dhe gjuhët e programimit

for(int j=i; j<nr_rez-1; j++)


n[j]=n[j+1];
nr_rez--;
printf("\n Ndeshja u fshi me sukses.");
return;
}
}

printf("\n Ndeshja u nuk fshi me sukses.");


}

2020 Departamenti i Inxhinierisë Informatike 32


Shembull
void paraqit_rezultate()
{
FTI – Teknikat dhe gjuhët e programimit

printf("\n Paraqitje Rezultatesh");

for (int i=0; i< nr_rez; i++){


printf("\n%d: %d %d - Java %d -- %d:%d ",i+1,
n[i].skuadra_p_id, n[i].skuadra_v_id, n[i].java,
n[i].shenuar, n[i].pesuar );
}
}

2020 Departamenti i Inxhinierisë Informatike 33


Shembull
int main(){
char k;
FTI – Teknikat dhe gjuhët e programimit

do{
menu();
k=getch();
if (k=='1') lexo();
else if (k=='2' && nr_rez==0 ) regjistro_skuader();
else if (k=='3' && nr_rez==0 ) fshi_skuader();
else if (k=='4' && nr_skuadra>0 && nr_skuadra%2==0)
regjistrim_rezultati();
else if (k=='5' && nr_rez==0 ) fshirje_rezultati();
else if (k=='s') save();
else if (k=='p') paraqit_rezultate();
printf("\n shtypni nje karakter per te vazhduar...");
getch();
}while (k!='d' && k!='D' && k!=27);
}

2020 Departamenti i Inxhinierisë Informatike 34

You might also like