Сформировать файл “stud”. Напечатать список студентов мужского пола с указанием их возраста. Проблема с кодировкой - C (СИ)

Формулировка задачи:

Добрый вечер! Помогите исправить, доработать пограмму. Проблема в том что в файл записивает только первое слово фамилию, а дальше карлюки (смотрите вложения), надо это исправить! Задача Сформировать файл “stud”, имеющий следующую структуру: фамилия студента, пол(буква), год рождения. Напечатать список студентов мужского пола с указанием их возраста. Решение:
#include <stdio.h>
#include <string.h>
#define N 1
struct swed
{
    char    fio[31];
    char    pl;
    int     god;
};
int main()
{
    struct swed    d[N];
    FILE *         f;
    int            i, t, k;
    if((f = fopen("D:\\f.txt", "wb")) != NULL)
    {
        for(i = 0; i < N; i++)
        {
            printf("prizv: ");
            gets(d[i].fio);
            printf("pol   : ");
            d[i].pl = getchar();
            printf("god r.: ");
            scanf("%d", &d[i].god);
            puts("");
            fflush(stdin);
 
 
        }
 
{
fwrite(d, sizeof(swed), N, f);
 
 
        fclose(f);
}
    }
    if((f = fopen("D:\\f.txt", "rb")) != NULL)
    {
      fread(d, sizeof(swed), N, f);
 
 
 
        t = k = 0;
        for(i = 0; i < N; i++)
        {
            if(d[i].pl == 'm')
            {
                printf("%s\t( %d )\n", d[i].fio, 2014 - d[i].god);
                t += 2014 - d[i].god;
                k++;
            }
        }
        if(k > 0)
            printf("\Seredniy vik = %g\n", (float)t / k);
        fclose(f);
    }
    return 0;
}

Код к задаче: «Сформировать файл “stud”. Напечатать список студентов мужского пола с указанием их возраста. Проблема с кодировкой - C (СИ)»

textual
#include <stdio.h>
#include <string.h>
#define N 2
 
struct swed
{
    char    fio[31];
    char    pl;
    int     god;
};
 
 
int main()
{   struct swed    d[N];
    FILE          *fin, *fout;
    int            i, t, k;
    if((fin = fopen("D:\\f.txt", "wb")) != NULL)
    {
        for(i = 0; i < N; i++)
        {
            printf("prizv: ");
            gets(d[i].fio);
            printf("pol   : ");
            d[i].pl = getchar();
            printf("god r.: ");
            scanf("%d", &d[i].god);
            puts("");
            fflush(stdin);
         }
 
        fwrite(d, sizeof(swed), N, fin);
        fclose(fin);
 
    }
    
    if((fout = fopen("D:\\f.txt", "rb")) != NULL)
    {
        fread(d, sizeof(swed), N, fout);
        t = k = 0;
        for(i = 0; i < N; i++)
        {   if(d[i].pl == 'm')
            {   printf("%s\t( %d )\n", d[i].fio, 2014 - d[i].god);
                t += 2014 - d[i].god;
                k++;
            }
        }
        
        if(k > 0)
            printf("Seredniy vik = %lf\n", (double)t / k);
        fclose(fout);
    }
 
    getchar();
    return 0;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

8   голосов, оценка 4.250 из 5


СДЕЛАЙТЕ РЕПОСТ