Написал программу которая читает файл и выводит содержимое: "ФИО - оценка" - C (СИ)
Формулировка задачи:
Написал программу которая читает файл и выводит содержимое ФИО оценка.
проблема вот в чём. Я Могу читать вот такой файл и работать с ним:
А нужно вот такой:
Код:
вот сам код программы:
Помогите пожалуйста подправить мой код что бы работал, под ",".
Листинг программы
- Петров Владимир Владимирович 4 4 4 4
- Иванов Иван Иванович 3 4 3 5
- Сидоров Генадий Александрович 5 5 5 5
Листинг программы
- Петров,Владимир,Владимирович,4,4,4,4
- Иванов,Иван,Иванович,3,4,3,5
- Сидоров,Геннадий,Александрович,5,5,5,5
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- #define N 10
- struct _base
- {
- char name[50];
- char lastname[50];
- char fname[50];
- int matan;
- char lin;
- int fizika;
- char prog;
- } base[N];
- main(void)
- {
- FILE *fp;
- char i=0, n;
- double sred;
- char fname[128];
- setlocale(LC_ALL,"Russian");
- printf("Введите имя файла: ");
- gets(fname);
- if((fp=fopen(fname, "rb"))==NULL)
- {
- printf("He удается открыть файл.\n");
- exit(1);
- }
- printf("\n");
- while (!feof(fp))
- {
- n=i;
- fscanf(fp,"%s%s%s%s%d%d%d%d",base[i].lastname, base[i].name, base[i].fname, &base[i].matan, &base[i].lin, &base[i].fizika, &base[i].prog);
- i++;
- }
- fclose(fp);
- for(i=0;i<n+1;i++)
- {
- printf("%12s", base[i].lastname);
- printf("%3c.%c.",base[i].name[0], base[i].fname[0]);
- sred = base[i].fizika-'0'+base[i].matan+base[i].fizika+base[i].prog;
- sred=sred/4;
- if(sred>=4)
- printf(" %2.f\n", sred);
- else
- printf(" %4.1f !!!!!!!!!!\n", sred);
- }
- printf("\n");
- }
Решение задачи: «Написал программу которая читает файл и выводит содержимое: "ФИО - оценка"»
textual
Листинг программы
- fscanf(fp,"%50[^, ]%*c %50[^, ]%*c %50[^, ]%*c %50[^, ]%*c %d%*c %d%*c %d%*c %d"
Объяснение кода листинга программы
В данном коде используется функция fscanf для чтения данных из файла. Она принимает в качестве аргументов файловый указатель и форматную строку. Вот список действий, которые выполняются в данном коде:
- Чтение имени первого человека из файла с помощью формата
%50[^, ]
. Здесь используется флаг%*c
для пропуска пробелов и запятых. - Чтение фамилии первого человека из файла с помощью формата
%50[^, ]
. - Чтение отчества первого человека из файла с помощью формата
%50[^, ]
. - Чтение имени второго человека из файла с помощью формата
%50[^, ]
. - Чтение фамилии второго человека из файла с помощью формата
%50[^, ]
. - Чтение отчества второго человека из файла с помощью формата
%50[^, ]
. - Чтение имени третьего человека из файла с помощью формата
%50[^, ]
. - Чтение фамилии третьего человека из файла с помощью формата
%50[^, ]
. - Чтение отчества третьего человека из файла с помощью формата
%50[^, ]
. - Чтение имени четвертого человека из файла с помощью формата
%50[^, ]
. - Чтение фамилии четвертого человека из файла с помощью формата
%50[^, ]
. - Чтение отчества четвертого человека из файла с помощью формата
%50[^, ]
. - Чтение имени пятого человека из файла с помощью формата
%50[^, ]
. - Чтение фамилии пятого человека из файла с помощью формата
%50[^, ]
. - Чтение отчества пятого человека из файла с помощью формата
%50[^, ]
. - Чтение имени шестого человека из файла с помощью формата
%50[^, ]
. - Чтение фамилии шестого человека из файла с помощью формата
%50[^, ]
. - Чтение отчества шестого человека из файла с помощью формата
%50[^, ]
. - Чтение оценки первого человека из файла с помощью формата
%d
. - Чтение оценки второго человека из файла с помощью формата
%d
. - Чтение оценки третьего человека из файла с помощью формата
%d
. - Чтение оценки четвертого человека из файла с помощью формата
%d
. - Чтение оценки пятого человека из файла с помощью формата
%d
. - Чтение оценки шестого человека из файла с помощью формата
%d
. Пожалуйста, обратите внимание, что в данном коде не предусмотрена обработка ошибок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д