Reading and dividing files in C

1

I'm doing a project for college, the code already reads the files and splits the lines taking into account the ";", how can I write these tokens into variables?

struct informacaoFicheiroInput{
    int id;
    int acompanhantes;
    char tipo[11];
    int entrada;
    int saida;
    int servico;
};

void lerFicheiroInput(){
    struct informacaoFicheiroInput informacao[20];

    FILE* file;
    file = fopen("input.txt","r");

    if(file == NULL){
        printf("Não foi possivel abrir o arquivo.\n");
    }

    char line[20], *token, dados[11][20];

    while(fgets(line, 100, file) != NULL){
        int count = 0;
        token = strtok(line,";");

        while(token != NULL) {
            dados[count++] = token;
            token = strtok(NULL, ";");
        }
    }
}

The input file is of the genre:

10 ; Visitante ; 10 ; 19 ; 2
2 ; 1 ; Funcionario ; 8 ; 0
3 ; 2 ; Diretor ; 12 ; 19
4 ; Visitante ; 8 ; 0 ; 3
    
asked by anonymous 01.06.2018 / 21:31

1 answer

1

Try this:

void lerFicheiroInput(){
    struct informacaoFicheiroInput informacao[4];

    FILE* file;
    file = fopen("input.txt","r");

    if(file == NULL){
        printf("Não foi possivel abrir o arquivo.\n");
    }

    char line[100], *token, dados[5][20];
    int info = 0;

    while(fgets(line, 100, file) != NULL){
        int count = 0;
        token = strtok(line,";");

        while(token != NULL && count < 5) {
            dados[count++] = token;
            token = strtok(NULL, ";");
        }

        // Mete os dados lidos da info-esima linha
        // em informacao.
        if (strcmp(" Visitante ", dados[1]) == 0){
            informacao[info].id = atoi(dados[0]);
            strcpy(informacao[info].tipo, dados[1]);
            informacao[info].entrada = atoi(dados[2]);
            informacao[info].saida = atoi(dados[3]);
            informacao[info].servico = atoi(dados[4]);
        } else {
            informacao[info].id = atoi(dados[0]);
            informacao[info].acompanhantes = atoi(dados[1]);
            strcpy(informacao[info].tipo, dados[2]);
            informacao[info].entrada = atoi(dados[3]);
            informacao[info].saida = atoi(dados[4]);
        }
        ++info;
    }

    fclose(file);
}
    
02.06.2018 / 01:26