Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- //Создание узла
- typedef struct Stud {
- char *first_name, *last_name;
- int year, month, day;
- double av_grade;
- struct Stud *next;
- } Stud;
- //Добавление узла
- void push(Stud **head, char *first_name, char *last_name, int year, int month, int day, double av_grade) {
- Stud *tmp = (Stud*) malloc(sizeof(Stud));
- tmp -> first_name = (char*) malloc(strlen(first_name));
- strcpy(tmp -> first_name, first_name);
- tmp -> last_name = (char*) malloc(strlen(last_name));
- strcpy(tmp -> last_name, last_name);
- tmp -> year = year;
- tmp -> month = month;
- tmp -> day = day;
- tmp -> av_grade = av_grade;
- tmp -> next = *head;
- *head = tmp;
- }
- void write_to_file(Stud *head, FILE *target){
- while (head != NULL) {
- fprintf(target, "%s\r\n", head -> first_name);
- fprintf(target, "%s\r\n", head -> last_name);
- fprintf(target, "%d ", head -> year);
- fprintf(target, "%d ", head -> month);
- fprintf(target, "%d\r\n", head -> day);
- fprintf(target, "%lf\r\n", head -> av_grade);
- head = head -> next;
- }
- }
- //Вывод списка
- void printList(Stud *head) {
- while (head) {
- printf("First name: %s", head -> first_name);
- printf("Last name: %s", head -> last_name);
- printf("Date of Birth: %d %d %d\n", head-> day, head -> month, head -> year);
- printf("Av_grade: %lf\n\n", head -> av_grade);
- head = head -> next;
- }
- printf("\n");
- }
- int main() {
- Stud *head = NULL;
- char first_name[50], last_name[50], name_file[100], buf[10];
- int year, month, day;
- double av_grade;
- FILE *source;
- while(1) {
- int act;
- scanf("%d", &act);
- switch (act) {
- //Чтение из файла
- case 1: {
- printf("Enter file name:\n");
- scanf("%s", name_file);
- //printf("%s", name_file);
- if ((source = fopen(name_file, "rw")) == NULL)
- printf("File error!");
- while (fgets(first_name, 64, source) != NULL) {
- fgets(last_name, 64, source);
- fgets(buf, 10, source);
- year = atoi(buf);
- fgets(buf, 10, source);
- month = atoi(buf);
- fgets(buf, 10, source);
- day = atoi(buf);
- fgets(buf, 10, source);
- av_grade = atof(buf);
- push(&head, first_name, last_name, year, month, day, av_grade);
- }
- fclose(source);
- }
- case 2: {
- printf("New file name:\n");
- scanf("%s", name_file);
- FILE *target;
- target = fopen(name_file, "wb");
- write_to_file(head, target);
- fclose(target);
- }
- /* case 3:
- printList(head);*/
- case 4: {
- printf("Surname, first name:\n");
- scanf("%s %s", last_name, first_name);
- sprintf(last_name, "%s%s", last_name, "\n\0");
- sprintf(first_name, "%s%s", first_name, "\n\0");
- printf("Enter date of birth (DD MM YYYY):\n");
- scanf("%d %d %d", &day, &month, &year);
- printf("Grade point average:\n");
- scanf("%lf", &av_grade);
- push(&head, first_name, last_name, year, month, day, av_grade);
- }
- case 5: {
- printf("Base Plot File:\n");
- scanf("%s", name_file);
- source = fopen(name_file, "r");
- while (fgets(first_name, 64, source) != NULL) {
- fgets(last_name, 64, source);
- fgets(buf, 10, source);
- year = atoi(buf);
- fgets(buf, 10, source);
- month = atoi(buf);
- fgets(buf, 10, source);
- day = atoi(buf);
- fgets(buf, 10, source);
- av_grade = atof(buf);
- push(&head, first_name, last_name, year, month, day, av_grade);
- }
- }
- case 6: {
- }
- case 8:
- return 0;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement