Вывести всех мужчин из файла на экран - C (СИ)

Узнай цену своей работы

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

Доброго времени суток! Подскажите, пожалуйста, есть структура ФИО, пол, возраст. Записи вводятся с клавиатуры. Необходимо сохранить эту информацию в файл, а потом вывести всех мужчин на экран и в отдельный файл.
Есть код для чтения из файла структуры, но не пойму как добавить условие...
#include "stdafx.h"
#include <cstdio>

int _tmain(int argc, _TCHAR* argv[])
{
    FILE *file;
    struct food {
        char name[20]; 
        unsigned qty; 
        float price; 
    };
    struct food shop[10];
    char i=0;
 
    file = fopen("e:\\Test\\tst.txt", "r");
 
    while (fscanf (file, "%s%u%f", shop[i].name, &(shop[i].qty), &(shop[i].price)) != EOF) {
        printf("%s %u %.2f\n", shop[i].name, shop[i].qty, shop[i].price); 
        i++;
    }
    
    file = fopen("e:\\Test\\fprintf.txt", "w");
 
    while (scanf ("%s%u%f", shop[i].name, &(shop[i].qty), &(shop[i].price)) != EOF) {
        fprintf(file, "%s %u %.2f\n", shop[i].name, shop[i].qty, shop[i].price); 
        i++;
    }
    fread;
    
    return 0;
}
#include "stdafx.h"
#include <cstdio>

int _tmain(int argc, _TCHAR* argv[])
{
    FILE *file;
    struct Person {
        char name[20]; 
        char gender[20]; 
        unsigned age; 
    };
    struct Person SinglePerson[10];
    char i=0;
 
    file = fopen("e:\\Test.txt", "r");
 
    while (fscanf (file, "%s%s%u", SinglePerson[i].name, &(SinglePerson[i].gender), &(SinglePerson[i].age)) != EOF) {
        printf("%s %s %u\n", SinglePerson[i].name, SinglePerson[i].gender, SinglePerson[i].age); 
        i++;
    }
 
    file = fopen("e:\\fprintf.txt", "w");
 
    while (scanf ("%s%s%u", SinglePerson[i].name, &(SinglePerson[i].gender), &(SinglePerson[i].age)) != EOF) {
        fprintf(file, "%s %s %u\n", SinglePerson[i].name, SinglePerson[i].gender, SinglePerson[i].age); 
        i++;
    }
    fread;
 
    return 0;
}
Модераторы, первый код не относится к теме о_0 Удалите его!

Решение задачи: «Вывести всех мужчин из файла на экран»

textual
Листинг программы
#include<stdio.h>
 
struct st{
    int number;
    struct st* prev;
    struct st* next;
};
 
struct st* findelem(struct st*,int);
 
int main(void){
    struct st *head=NULL,*z,*t;
    int n,m;
    char a,w;
    clrscr();
    printf("a-add\nf-find\nd-delete\nc-clear\ns-show\nm-print menu\ne-exit");
    w=1;
    while(w){
        a=getch();
        switch(a){
            case'a':
                printf("\ninput number:");
                scanf("%d",&n);
                z=(struct st*)malloc(sizeof(struct st));
                z->number=n;
                printf("select place for elem:\n f-first\n l-last\n b-before number\n a-after number\n r-replase\n c-cancel");
                a=getch();
                switch(a){
                    case'l':
                        if(head!=NULL){
                            t=head;
                            while(t->next!=NULL)
                                t=t->next;
                            t->next=z;
                            z->prev=t;
                            z->next=NULL;
                            break;
                        }
                    case'f':
                        if(head!=NULL){
                            z->next=head;
                            head->prev=z;
                            head=z;
                        }
                        else{
                            head=z;
                            head->next=NULL;
                            head->prev=NULL;
                        }
                    break;
                    case'b':
                    case'a':
                        printf("\ninput number-point for insert:");
                        scanf("%d",&m);
                        t=findelem(head,m);
                        if(t!=NULL){
                            if(a=='b'){
                                if(t==head){
                                    head->prev=z;
                                    z->next=head;
                                    head=z;
                                    printf("%d inserted",n);
                                    break;
                                }
                                t=t->prev;
                            }
                            //insert after t
                            t->next->prev=z;
                            z->next=t->next;
                            t->next=z;
                            z->prev=t;
                            printf("%d inserted",n);
                        }
                        else
                            printf("%d not found\ncanceled",m);
                    break;
                    case'r':
                        free(z);
                        printf("\ninput number for replace:");
                        scanf("%d",&m);
                        t=findelem(head,m);
                        if(t){
                            t->number=n;
                            printf("%d changed to %d",m,n);
                        }
                        else
                            printf("%d not found for replace");
                    break;
                    default:
                        free(z);
                        printf("\ncanceled");
                }
                printf("\naccepted");
            break;
            case'f':
                if(head!=NULL){
                    printf("\ninput number for find:");
                    scanf("%d",&n);
                    if(findelem(head,n)!=NULL)
                        printf("%d exist",n);
                    else
                        printf("%d not found",n);
                }
                else
                    printf("\nempty");
            break;
            case'd':
                if(head!=NULL){
                    printf("\ninput key for delete:");
                    scanf("%d",&n);
                    t=findelem(head,n);
                    if(t==NULL)
                        printf("%d not found for delete",n);
                    else{
                        if(t==head)
                            head=head->next;
                        else{
                            t->next->prev=t->prev;
                            t->prev->next=t->next;
                        }
                        free(t);
                        printf("%d deleted",n);
                    }
                }
                else
                    printf("\nempty");
            break;
            case's':
                printf("\n");
                z=head;
                while(z!=NULL){
                    printf(" %d ",z->number);
                    z=z->next;
                }
                printf(" end");
            break;
            case'm':
                printf("\na-add\nf-find\nd-delete\nc-clear\ns-show\nm-print menu\ne-exit");
            break;
            case'e':
                w=0;
            case'c':
                if(head!=NULL){
                    while(head->next!=NULL){
                        head=head->next;
                        free(head->prev);
                    }
                    free(head);
                    head=NULL;
                }
                printf("\nmemory cleared");
            break;
        }
    }
    return 0;
}
 
struct st* findelem(struct st *s,int elem){
    while(s!=NULL && s->number!=elem)
        s=s->next;
    if(s!=NULL)
        return s;
    else
        return NULL;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы