Sunteți pe pagina 1din 5

Lab 11 Problema 1 afisarea continutului unui fisier pe ecran

#include<conio.h> #include<stdio.h> #include<stdlib.h> void main(void) { clrscr(); char c; FILE *pf = fopen("pr1.txt", "r"); if(pf!=NULL) { while(!feof(pf)) { c=fgetc(pf); //scrie la dispozitivul standard de iesire fputc(c, stdout); } }else { printf("\nFisierul nu a putut fi deschis."); exit(1); } fclose(pf); getch(); }

Problema 2 citire text de la tastatura si apoi scriere in fisier


#include<stdio.h> #include<conio.h> #include<stdlib.h> void main(void) { clrscr(); char c; FILE *pf = fopen("pr2.txt", "w+"); if(pf == NULL) { printf("\nEroare la deschiderea fisierului"); exit(1); } while((c = getc(stdin)) != EOF) { if(c == '.') break; putc(c, pf); } if(fclose(pf) == -1) printf("\nEroare la inchiderea fisierului"); getch(); }

Problema 3 crearea fisierelor fis1.txt si fis2.txt si concatenarea lor


#include<stdio.h> #include<alloc.h> #include<conio.h> #include<stdlib.h> void main(void) { clrscr(); int n = 20; char *sir = (char *)malloc(n+1); FILE *pf1, *pf2, *pf; pf1 = fopen("fis1.txt", "r"); if(pf1 == NULL) { printf("\nEroare la deschiderea primului fisier"); exit(1);

} pf2 = fopen("fis2.txt", "r"); if(pf2 == NULL) { printf("\nEroare la deschiderea celui de-al doilea fisier"); fclose(pf1); exit(1); } pf = fopen("fis.txt", "w+"); while(fgets(sir, n, pf1) != NULL) if(fputs(sir, pf) == -1) { printf("\nEroare la scriere in fisier"); exit(1); } while(fgets(sir, n, pf2) != NULL) if(fputs(sir, pf) == -1) { printf("\nEroare la scriere in fisier"); exit(1); } //afisare continut fisier //fseek(pf, 0L, SEEK_SET) rewind(pf); while(fgets(sir, n, pf) != NULL) if(fputs(sir, stdout) == -1) { printf("\nEroare la scriere in fisier standard de iesire"); exit(1); } if(fclose(pf1) == -1) printf("\nEroare la inchidere fis1.txt"); if(fclose(pf2) == -1) printf("\nEroare la inchidere fis2.txt"); if(fclose(pf) == -1) printf("\nEroare la inchidere fis.txt"); free(sir); getch(); }

Problema 4 concatenare fisiere ale caror nume sunt date ca argumente ale liniei de comanda
#include<stdio.h> #include<conio.h> #include<stdlib.h> #define BUF 100 void afisFisier(FILE *pf); void main(int argc, char **argv) { clrscr(); FILE *pf; if(argc == 1) { //copiere intrare standard in iesire standard printf("\nIntroduceti liniile(terminare CTRL+Z)\n"); afisFisier(stdin); }else { for(int i=1; i<argc; i++) { pf = fopen(argv[i], "r"); if(pf == NULL) { printf("\nEroare la deschiderea fisierului %s", argv[i]); exit(1); } afisFisier(pf); getch();

} } getch(); }

if(fclose(pf) == -1) { printf("\nEroare la inchidere fisier %s", argv[i]); exit(1); }

void afisFisier(FILE *pf){ char buf[BUF]; while(fgets(buf, BUF, pf) != NULL) fputs(buf, stdout); }

Problema 5 citire text ordonare- si scriere in fisier


#include<stdio.h> #include<conio.h> #include<alloc.h> #include<string.h> int getText(char **text, char *temp); void sortareCrescatoare(char **text, int nrLin); void afisText(char **text, int nrLin); void main(void) { clrscr(); char *text[30]; char temp[80]; int lin = getText(text, temp); sortareCrescatoare(text, lin); puts("Textul este:"); afisText(text, lin); FILE *pf = fopen("pr5.txt", "w+"); if(pf == NULL) printf("Eroare la deschiderea fisierului"); else { for(int i = 0; i < lin; i++) { fputs(text[i], pf); putc('\n', pf); } if(fclose(pf) == -1) printf("\nEroare la inchidere fisier"); } //dezalocare memorie for(int i = 0; i < lin; i++) free(text[i]); getch(); } void sortareCrescatoare(char **text, int nrLin) { int flag; char *temp; do { flag = 0; for(int i=0 ; i < nrLin-1; i++) if(strcmp(text[i], text[i+1]) > 0){ temp = text[i]; text[i] = text[i+1]; text[i+1] = temp; flag=1; } }while(flag == 1);

} int getText(char **text, char *temp) { int nrLin = 0; puts("Introduceti liniile textului"); while(1) { gets(temp); if(strlen(temp) == 0) break; if(nrLin == 29) break; text[nrLin] = (char*)malloc(strlen(temp) + 1); strcpy(text[nrLin], temp); nrLin++; } return nrLin; } void afisText(char **text, int nrLin) { for(int i=0; i<nrLin; i++) printf("\n%s\n", text[i]); } Problema 6 fisiere binare #include<stdio.h> #include<conio.h> #include<stdlib.h> typedef struct { char den[50], um[5]; int pret, cant; }ARTICOL; union { ARTICOL art[5]; char tampon[5 * sizeof(ARTICOL)]; }tmp; void main(void) { clrscr(); FILE *pf = fopen("pr6.txt", "wb+"); if(pf == NULL) { printf("\nEroare la deschiderea fisierului"); exit(1); } ARTICOL a0 = { "Franzela Bucium", "buc", 5000, 200}; tmp.art[0] = a0; ARTICOL a1 = {"Franzela Tatarasi", "buc", 5590, 210}; tmp.art[1] = a1; ARTICOL a2 = {"Franzela", "buc", 4000, 100}; tmp.art[2] = a2; ARTICOL a3 = {"Franzela Pangran", "buc", 5000, 600}; tmp.art[3] = a3; ARTICOL a4 = {"test", "buc", 5000, 200}; tmp.art[4] = a4; //scrierea continutului zonei tampon in fisier if( fwrite(tmp.tampon, sizeof(ARTICOL), 5, pf) != 5 ) { printf("Eroare la scriere"); } rewind(pf); while(fread(tmp.tampon, sizeof(ARTICOL), 5, pf) > 0) { for(int i=0; i<5; i++) { printf("\nDenumire:%s", tmp.art[i].den);

printf("\nUnit mas:%s", tmp.art[i].um); printf("\nPret:%d", tmp.art[i].pret); printf("\nCantitate:%d", tmp.art[i].cant); getch();

} if(fclose(pf) == -1) printf("\nEroare la inchiderea fisierului"); getch();