Advertisement
Guest User

fisier

a guest
Apr 23rd, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4.  
  5. typedef struct
  6. {
  7. char cnp[14];
  8. char nume[30];
  9. char an;
  10. int clasa;
  11. int nrd;
  12. int note[5];
  13. }elev;
  14. //functia care scrie cate un articol student din fisierul binar f in fisierul text g
  15. void elev_intext( FILE *text, elev *x)
  16. {
  17. int i;
  18. fprintf(text," %-15s %-20s %c %d %d ", x->cnp, x->nume, x->an, x->clasa, x->nrd);
  19. for (i = 0; i < x->nrd; i++)
  20. fprintf(text, "%d ", x->note[i]);
  21. fprintf(text,"\n");
  22.  
  23. }
  24.  
  25. int main()
  26. {
  27. FILE *f, *g;
  28. char numef[20], numeg[20], cnpc[14];//cnpc pt cnp-ul cautat
  29. elev x;
  30. int cls, gasitcl, gasitcnp;//cls pt clasa dorita
  31.  
  32. printf("Numele primului fisier: ");
  33. gets_s(numef); if (numef[0] == 0) gets_s(numef);
  34. f = fopen(numef, "rb");
  35. if (!f)
  36. printf("Fisierul 1 nu a putut fi deschis.");
  37. else
  38. {
  39. printf("Nume fisier2= "); gets_s(numeg);
  40. if (numeg[0] == 0) gets_s(numeg);
  41. g = fopen(numeg, "wt");
  42. if (!g)
  43. printf("Fiserul 2 nu a putut fi deschis.");
  44. else
  45. {
  46. fprintf(g, "\t\t Lista elevilor\n ");
  47. fprintf(g, " %-15s %-20s an clasa nrd \n", "cnp", "nume");
  48. fseek(f, 0, 0);
  49. fread(&x, sizeof(elev), 1, f);
  50. while (!feof(f))
  51. {
  52. elev_intext(g, &x);
  53. fread(&x, sizeof(elev), 1, f);
  54. }
  55.  
  56. //afisarea elevilor dintr-o anumita clasa introdusa de la tastatura
  57. fprintf(g, "\nAfisarea elevilor dupa o anumita clasa ");
  58. printf("\n clasa dorita= "); scanf("%d", &cls);
  59. while (!feof(stdin))
  60. {
  61. gasitcl = 0;
  62. fseek(f, 0, 0);
  63. fread(&x, sizeof(elev), 1, f);
  64. while (!feof(f))
  65. {
  66. if (x.clasa == cls)
  67. {
  68. if(gasitcl==0)
  69. fprintf(g, "\n Lista elevilor din clasa %d\n ", cls);
  70. elev_intext(g, &x);
  71. gasitcl = 1;
  72.  
  73. }
  74. fread(&x, sizeof(elev), 1, f);
  75. }
  76. if (gasitcl == 0)
  77. fprintf(g, "\nNu s-a gasit niciun elev in clasa %d", cls);
  78. printf("\n clasa dorita= "); scanf("%d", &cls);
  79. }
  80.  
  81.  
  82. //gasirea unui elev dupa cnp
  83. fprintf(g, "Gasirea unui elev dupa cnp");
  84. printf("Cnp-ul elevului= "); gets_s(cnpc);
  85. if (cnpc[0] == 0) gets_s(cnpc);
  86. while (!feof(stdin))
  87. {
  88. gasitcnp = 0;
  89. fseek(f, 0, 0);
  90. fread(&x, sizeof(elev), 1, f);
  91. while (!feof(f))
  92. {
  93. if (strcmp(x.cnp, cnpc) == 0)
  94. {
  95. elev_intext(g, &x);
  96. gasitcnp = 1;
  97. }
  98. fread(&x, sizeof(elev), 1, f);
  99. }
  100. if (gasitcnp == 0)
  101. fprintf(g, "Nu exista un elev cu cnp-ul %s", cnpc);
  102. printf("Cnp-ul elevului= "); gets_s(cnpc);
  103. if (cnpc[0] == 0) gets_s(cnpc);
  104. }
  105.  
  106. fclose(g);
  107. }
  108.  
  109. fclose(f);
  110. }
  111.  
  112. printf("\n\nGata, apasa o tasta ");
  113. _getch();
  114.  
  115. return 0;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement