0

この方法でフォーマットされたファイルを読み取り、情報を構造体に保存する必要があります。

Johnny Rico A B A B C C C B B A
Ace Levy A A B A C A C A C A
Carmen Ibanez A B B B C C B B B B
Dizzy Flores B A A B C C C B B A
Zander Barcalow A B A B C C A B B A
Carl Jenkins A A A C B C A B B B

編集

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

#define N 100

typedef struct _cad
{
    char nome[36], cognome[36];
    char risultati[50];
} Cadetto;

/*
 * 
 */
int main(int argc, char** argv)
{
    FILE *fp = NULL;
    int j = 0, count = 0, i, k;
    char riga[255];
    Cadetto cadetti[100];
    char *ptk;

    if(argc != 2)
    {
        fprintf(stderr, "Error: no parameter has been passed!\n");
        exit(1);
    }


    if((fp = fopen(argv[1], "r")) == NULL)
    {
        fprintf(stderr, "Error opening file %s\n", argv[1]);
        exit(1);
    }

    while (fgets(riga, sizeof(riga), fp) != NULL)
    {
        j = 0;

        ptk = strtok(riga, " ");
        strcpy(cadetti[count].nome, ptk);

        ptk = strtok(NULL, " ");
        strcpy(cadetti[count].cognome, ptk);

        while (ptk != NULL)
        {
            ptk = strtok(NULL, " ");
            cadetti[count].risultati[j] = *ptk;
            j++;
        }

        count++;
    }

    fclose(fp);

    for (i = 0; i < count; i++)
    {
        printf("%s %s", cadetti[i].nome, cadetti[i].cognome);

        for (k = 0; k < j; k++)
        {
            printf(" %c", cadetti[i].risultati[k]);
        }

        printf("\n");
    }

    return (EXIT_SUCCESS);
}

これはプログラムですが、再び機能しません

ここに画像の説明を入力

4

2 に答える 2

0
sscanf(riga, "%s %s %s", cadetti[count].nome,
                                 cadetti[count].cognome,
                                 result);

==>

char * tmp = strtok( riga, " ");
memcpy(cadetti[count].nome,tmp,strlen(tmp)+1);

tmp= strtok (NULL " ");
memcpy(cadetti[count].cognome,tmp,strlen(tmp)+1); 

tmp= strtok(NULL,'\0');
memcpy(result,tmp,strlen(tmp)+1);
于 2013-08-13T11:47:51.590 に答える