Advertisement
unnn

model 2

Apr 17th, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.54 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct {
  5.     int nr;
  6.     char nume[30];
  7.     int grupa;
  8.     int pp;
  9.     int pt[10];
  10.     int pe;
  11.     int is;
  12. }Student;
  13.  
  14. int nrart(FILE *f, int l) {
  15.     long p;
  16.     int n;
  17.  
  18.     p = ftell(f);
  19.     fseek(f, 0, 2);
  20.     n = ftell(f)/l;
  21.     fseek(f, p, 0);
  22.  
  23.     return n;
  24. }
  25.  
  26. void BinInText(char *numeBin, char *numeTxt, Student s) {
  27.     FILE *f, *g;
  28.     int i;
  29.  
  30.     f = fopen(numeBin, "rb");
  31.     g = fopen(numeTxt, "w");
  32.  
  33.     fprintf(g, "Nr. Nume %30s Grupa Pct proba Pct teme %20s Pct examen\n", " ", " ");
  34.     fread(&s, sizeof(Student), 1, f);
  35.     while(!feof(f)) {
  36.         if(s.is == 1) {
  37.             fprintf(g, "%3d %6s %30d %10d", s.nr, s.nume, s.grupa, s.pp);
  38.             for(i = 0; i < 10; i++)
  39.                 fprintf(g, " %d ", s.pt[i]);
  40.             fprintf(g, " %d\n", s.pe);
  41.         }
  42.         fread(&s, sizeof(Student), 1, f);
  43.     }
  44.     fclose(f);
  45.     fclose(g);
  46. }
  47.  
  48. int main() {
  49.     Student s;
  50.     FILE *f;
  51.     char nume[20], numetxt[20];
  52.     int nr, i;
  53.     int length;
  54.  
  55.     printf("Fisier: "); gets(nume); fflush(stdin);
  56.     printf("Fisier txt: "); gets(numetxt); fflush(stdin);
  57.     f = fopen(nume, "wb");
  58.     if(!f) printf("Fisierul nu s-a deschis!");
  59.     else {
  60.         printf("Nr. mat: ");
  61.         scanf("%d", &nr);
  62.         while(!feof(stdin)) {
  63.             if(nr >= nrart(f, sizeof(Student))) {
  64.                 fseek(f, 0, 2);
  65.                 s.is = 0;
  66.                 for(i = nrart(f, sizeof(Student)); i <= nr; i++)
  67.                     fwrite(&s, sizeof(Student), 1, f);
  68.             }
  69.             fseek(f, nr*sizeof(Student), 0);
  70.             fread(&s, sizeof(Student), 1, f);
  71.             if(s.is == 1) printf("Duplicat!");
  72.             else {
  73.                 s.nr = nr;
  74.                 fflush(stdin);
  75.                 printf("Nume: "); gets(s.nume);
  76.                 length = strlen(s.nume);
  77.                 if(s.nume[length-1] == '\n') s.nume[length-1] = '\0';
  78.                 printf("Grupa: "); scanf("%d", &s.grupa);
  79.                 printf("Pct prb: "); scanf("%d", &s.pp);
  80.                 for(i = 0; i < 10; i++) {
  81.                     printf("Tema %d: ", i+1);
  82.                     scanf("%d", &s.pt[i]);
  83.                 }
  84.                 printf("Pct exam: "); scanf("%d", &s.pe);
  85.                 s.is = 1;
  86.                 fseek(f, nr*sizeof(Student), 0);
  87.                 fwrite(&s, sizeof(Student), 1, f);
  88.             }
  89.             printf("Nr. mat: "); scanf("%d", &nr);
  90.         }
  91.         fclose(f);
  92.         BinInText(nume, numetxt, s);
  93.     }
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement