Написал программу которая читает файл и выводит содержимое: "ФИО - оценка" - 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. Пожалуйста, обратите внимание, что в данном коде не предусмотрена обработка ошибок.