Advertisement
puma7953

Untitled

Nov 24th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. //Создание узла
  6. typedef struct Stud {
  7.     char *first_name, *last_name;
  8.     int year, month, day;
  9.     double av_grade;
  10.     struct Stud *next;
  11. } Stud;
  12.  
  13. //Добавление узла
  14. void push(Stud **head, char *first_name, char *last_name, int year, int month, int day, double av_grade) {
  15.     Stud *tmp = (Stud*) malloc(sizeof(Stud));
  16.     tmp -> first_name = (char*) malloc(strlen(first_name));
  17.     strcpy(tmp -> first_name, first_name);
  18.     tmp -> last_name = (char*) malloc(strlen(last_name));
  19.     strcpy(tmp -> last_name, last_name);
  20.     tmp -> year = year;
  21.     tmp -> month = month;
  22.     tmp -> day = day;
  23.     tmp -> av_grade = av_grade;
  24.     tmp -> next = *head;
  25.     *head = tmp;
  26. }
  27.  
  28. void write_to_file(Stud *head, FILE *target){
  29.     while (head != NULL) {
  30.         fprintf(target, "%s\r\n", head -> first_name);
  31.         fprintf(target, "%s\r\n", head -> last_name);
  32.         fprintf(target, "%d ", head -> year);
  33.         fprintf(target, "%d ", head -> month);
  34.         fprintf(target, "%d\r\n", head -> day);
  35.         fprintf(target, "%lf\r\n", head -> av_grade);
  36.         head = head -> next;
  37.     }
  38. }
  39.  
  40. //Вывод списка
  41. void printList(Stud *head) {
  42.     while (head) {
  43.         printf("First name: %s", head -> first_name);
  44.         printf("Last name: %s", head -> last_name);
  45.         printf("Date of Birth: %d %d %d\n", head-> day, head -> month, head -> year);
  46.         printf("Av_grade: %lf\n\n", head -> av_grade);
  47.         head = head -> next;
  48.     }
  49.     printf("\n");
  50. }
  51.  
  52. int main() {
  53.  
  54.     Stud *head = NULL;
  55.     char  first_name[50], last_name[50], name_file[100], buf[10];
  56.     int year, month, day;
  57.     double av_grade;
  58.  
  59.     FILE *source;
  60.     while(1) {
  61.         int act;
  62.         scanf("%d", &act);
  63.  
  64.         switch (act) {
  65.             //Чтение из файла
  66.             case 1: {
  67.                 printf("Enter file name:\n");
  68.                 scanf("%s", name_file);
  69.                 //printf("%s", name_file);
  70.  
  71.                 if ((source = fopen(name_file, "rw")) == NULL)
  72.                     printf("File error!");
  73.  
  74.                 while (fgets(first_name, 64, source) != NULL) {
  75.                     fgets(last_name, 64, source);
  76.                     fgets(buf, 10, source);
  77.                     year = atoi(buf);
  78.                     fgets(buf, 10, source);
  79.                     month = atoi(buf);
  80.                     fgets(buf, 10, source);
  81.                     day = atoi(buf);
  82.                     fgets(buf, 10, source);
  83.                     av_grade = atof(buf);
  84.  
  85.                     push(&head, first_name, last_name, year, month, day, av_grade);
  86.  
  87.                 }
  88.                 fclose(source);
  89.             }
  90.             case 2: {
  91.                 printf("New file name:\n");
  92.                 scanf("%s", name_file);
  93.                 FILE *target;
  94.                 target = fopen(name_file, "wb");
  95.                 write_to_file(head, target);
  96.                 fclose(target);
  97.             }
  98.  
  99.    /*         case 3:
  100.                 printList(head);*/
  101.             case 4: {
  102.                 printf("Surname, first name:\n");
  103.                 scanf("%s %s", last_name, first_name);
  104.                 sprintf(last_name, "%s%s", last_name, "\n\0");
  105.                 sprintf(first_name, "%s%s", first_name, "\n\0");
  106.                 printf("Enter date of birth (DD MM YYYY):\n");
  107.                 scanf("%d %d %d", &day, &month, &year);
  108.                 printf("Grade point average:\n");
  109.                 scanf("%lf", &av_grade);
  110.  
  111.                 push(&head, first_name, last_name, year, month, day, av_grade);
  112.             }
  113.             case 5: {
  114.                 printf("Base Plot File:\n");
  115.                 scanf("%s", name_file);
  116.                 source = fopen(name_file, "r");
  117.  
  118.                 while (fgets(first_name, 64, source) != NULL) {
  119.                     fgets(last_name, 64, source);
  120.                     fgets(buf, 10, source);
  121.                     year = atoi(buf);
  122.                     fgets(buf, 10, source);
  123.                     month = atoi(buf);
  124.                     fgets(buf, 10, source);
  125.                     day = atoi(buf);
  126.                     fgets(buf, 10, source);
  127.                     av_grade = atof(buf);
  128.  
  129.                     push(&head, first_name, last_name, year, month, day, av_grade);
  130.                 }
  131.             }
  132.  
  133.             case 6: {
  134.  
  135.             }
  136.  
  137.             case 8:
  138.                 return 0;
  139.         }
  140.     }
  141.  
  142.     return 0;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement