Completo

 avatar
unknown
plain_text
2 years ago
4.4 kB
9
Indexable
#include <stdio.h>
#include <string.h>

#define NAME_SIZE       50
#define NUM_DISCIPLINES 3

typedef struct character_ {        
    char name[NAME_SIZE];        
    char clan_name[NAME_SIZE];        
    char sire_name[NAME_SIZE];        
    char disciplines[NUM_DISCIPLINES][NAME_SIZE];        
    char bane[NAME_SIZE];        
    int generation;
} Character;

typedef struct clan_ {        
    char name[NAME_SIZE];        
    char disciplines[NUM_DISCIPLINES][NAME_SIZE];        
    char faction[NAME_SIZE];        
    char bane[NAME_SIZE];
} Clan;

typedef struct sire_ {        
    char name[NAME_SIZE];        
    char clan_name[NAME_SIZE];        
    int generation;
} Sire;



void createCharacter(char playername[NAME_SIZE], char sirename[NAME_SIZE]) {

    FILE* userfile;
    FILE* clanes;
    FILE* sires;

    int flag = 0;

    Sire s;
    Character c;
    Clan cl;

    strcpy(c.name, playername);

    char name[NAME_SIZE];
    
    strcpy ( name, playername );
    
    strcat ( name, ".bin" );

    sires = fopen("sires.bin", "rb");
    if(NULL == sires) {

    } else {

        flag = 0;
        fread(&s, sizeof(Sire), 1, sires);
        while(!feof(sires) && !flag) {
            if(strcmp(sirename, s.name) == 0) {
                strcpy(c.sire_name, sirename);
                strcpy(c.clan_name, s.clan_name);
                c.generation = s.generation+1;
                flag = 1;
            }
            fread(&s, sizeof(Sire), 1, sires);
        }

        fclose(sires);
    }

    clanes = fopen("clans.bin", "rb");
    
    if(NULL == clanes) {

    } else {
        flag = 0;

        fread(&cl, sizeof(Clan), 1, clanes);
        while(!feof(clanes) && !flag) {
            if(strcmp(c.clan_name, cl.name) == 0) {

                strcpy(c.disciplines[0], cl.disciplines[0]);
                strcpy(c.disciplines[1], cl.disciplines[1]);
                strcpy(c.disciplines[2], cl.disciplines[2]);
                strcpy(c.bane, cl.bane);
                flag = 1;
            }
            fread(&cl, sizeof(Clan), 1, clanes);
        }

        fclose(clanes);

    }


    userfile = fopen(name, "wb");
    if(NULL == userfile) {
        //bad
    } else {
        //good
        fwrite(&c, sizeof(Character), 1, userfile);
        fclose(userfile);
    }

}


int main() {

    char pj_name[NAME_SIZE];    
    char sire[NAME_SIZE];
    
    printf("Please, give your character's name: ");    
    fgets(pj_name, NAME_SIZE, stdin);    
    pj_name[strlen(pj_name)-1] = '\0';
    
    printf("Please, give your sire's name: ");    
    fgets(sire, NAME_SIZE, stdin);    
    sire[strlen(sire)-1] = '\0';


    
    // FILE* fclans;
    // FILE* fsires;

    // Clan c;
    // Sire s;

    // fclans = fopen("clans.bin", "wb");

    // for(int i = 0; i < 3; i++) {
    //     printf("Clan name: ");
    //     scanf("%s", c.name);
    //     printf("Discipline 1: ");
    //     scanf("%s", c.disciplines[0]);
    //     printf("Discipline 2: ");
    //     scanf("%s", c.disciplines[1]);
    //     printf("Discipline 3: ");
    //     scanf("%s", c.disciplines[2]);
    //     printf("Faction: ");
    //     scanf("%s", c.faction);
    //     printf("Bane: ");
    //     scanf("%s", c.bane);

    //     fwrite(&c, sizeof(Clan), 1, fclans);


    // }

    // fclose(fclans);

    // fsires = fopen("sire.bin", "wb");

    // for(int i = 0; i < 3; i++) {
    //     printf("Sire name: ");
    //     scanf("%s", s.name);
    //     printf("Clan name: ");
    //     scanf("%s", s.clan_name);
    //     printf("Generation: ");
    //     scanf("%d", &s.generation);

    //     fwrite(&s, sizeof(Sire), 1, fsires);
    // }
    // fclose(fsires);

    

    

    createCharacter(pj_name, sire); // PROCEDURE TO CREATE  

    
    
    FILE *f;

    Character c;

    f = fopen("UPA.bin", "rb");
    if(NULL == f) {
        //
    } else {
        fread(&c, sizeof(Character), 1, f);
        printf("Name: %s\n", c.name);
        printf("Clan: %s\n", c.clan_name);
        printf("Sire: %s\n", c.sire_name);
        printf("Discipline 1: %s\n", c.disciplines[0]);
        printf("Discipline 2: %s\n", c.disciplines[1]);
        printf("Discipline 3: %s\n", c.disciplines[2]);
        printf("Bane: %s\n", c.bane);
        printf("Generation: %d\n", c.generation);
        fclose(f);
    }
    
return (0);

}
Editor is loading...