Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2020
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. struct STUD
  5. { //Тип с данните за едно лице
  6. char ime[31]; char EGN[11]; long FN; int oc[10]; float sru;
  7. };
  8. FILE* fl;
  9. char imefl[30];
  10. //char filename[40];
  11. STUD stud;
  12. //функция за във. данните за едно лице
  13. void readStud(STUD* st)
  14. {
  15. int i;
  16. printf("Име: "); gets(st->ime);
  17. printf("Фак. номер:");
  18. scanf("%ld", &st->FN);
  19. printf("Оценки по 10-те дисциплини\n");
  20. for (i = 0; i < 10; i++) {
  21. printf("По %d-а дисциплина:", i + 1);
  22. scanf("%d", &st->oc[i]);
  23. }
  24. getchar();
  25. }
  26. //функция за изв. данните за едно лице
  27. void writeStud(STUD st)
  28. {
  29. int i;
  30. printf("Име: %s\n", st.ime);
  31. printf("Факултетен номер:%06ld\n", st.FN);
  32. printf("Оценки: ", st.oc);
  33. //gets(bf);
  34. getchar();
  35.  
  36. }
  37.  
  38. int exist(char* ime)
  39. {
  40. FILE* f = fopen(strcat(ime, ".txt"), "r"); fclose(f);
  41. return f != NULL;
  42. }
  43. void chetene(char filename[30]){
  44.  
  45. FILE *fp;
  46. fp = fopen(filename, "rb");
  47. if (fp == NULL)
  48. {
  49. printf("немога да прочета файла");
  50. getchar();
  51. exit(1);
  52. }
  53. while (fread(&stud, sizeof(struct STUD), 1, fp) == 1)
  54. {
  55. printf("%d", sizeof(stud.oc));
  56. for (int i = 0; i < sizeof(stud.oc); i++){
  57. printf("%s", stud);
  58. }
  59. //printf("\n********************\n");
  60. }
  61. fclose(fp);
  62.  
  63. }
  64.  
  65. //функция за създаване на празен файл}
  66. void szdPrz(char filename[30])
  67. {
  68. /*char ch;
  69. fl = fopen(filename, "r");
  70. fclose(fl);
  71. if (NULL != fl)
  72. {
  73. printf("Файлът съществува! ");
  74. printf("Да го презапиша ли?");
  75. ch = getchar();
  76. if (ch == 'n') return;
  77. }
  78.  
  79. printf("\n Файлът е създаден.\n");*/
  80. char ch;
  81. FILE *file;
  82. if ((file = fopen(filename, "r")) != NULL)
  83. {
  84. // file exists
  85. printf("Файлът съществува!\n");
  86. printf("Да го презапиша ли?");
  87. ch = getchar();
  88. if (ch == 'n') return;
  89. strcpy(imefl, filename);
  90. fclose(file);
  91. }
  92. else
  93. {
  94. strcpy(imefl, filename);
  95. file = fopen(filename, "wb");
  96. fclose(file);
  97. printf("Файлът е създаден.\n");
  98. return;
  99. //File not found, no memory leak since 'file' == NULL
  100. //fclose(file) would cause an error
  101. }
  102.  
  103. }
  104. //функция за добавяне на компоненти към файла
  105. void dobaviane(char filename[30])
  106. {
  107. char ch;
  108.  
  109. if (!exist(imefl))
  110. {
  111. printf("Файлът не e създаден!\n"); return;
  112. }
  113. FILE *fl;
  114. fl = fopen(imefl, "w");
  115. do {
  116. readStud(&stud);
  117.  
  118. fwrite(&stud, sizeof(struct STUD), 1, fl);
  119. fclose(fl);
  120. printf("Ще продължите ли въвеждането? y/n");
  121. ch = getchar();
  122.  
  123. } while (ch != 'n');
  124.  
  125. }
  126.  
  127. void main()
  128. {
  129. system("chcp 1251");
  130. int c;
  131.  
  132. printf("Име на файл: "); gets(imefl);
  133.  
  134. do {
  135. printf("%20sМЕНЮ НА ИЗПЪЛНЯВАНИТЕ ОПЕРАЦИИ:\n", "");
  136. printf("%26s1. създаване на нов файл\n", "");
  137. printf("%26s2. добавяне на компоненти\n", "");
  138. printf("%26s3. списък от фак. № на всички студенти с не повече от две двойки.\n", "");
  139. printf("%20sПосочете операция или 0 за край: ", "");
  140. scanf("%d", &c); getchar();
  141. switch (c) {
  142. case 1:szdPrz(strcat(imefl, ".txt")); break;
  143. case 2:dobaviane(strcat(imefl, ".txt")); break;
  144. case 3:chetene(strcat(imefl, ".txt")); break;
  145. }
  146. getchar();
  147.  
  148. } while (c != 0);
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement