1

私の質問はすでに他の人から尋ねられていることは知っていますが、Cの初心者であるため、

私は率直に言って、それらの質問に対する答えを理解していません。

私は現在 Windows を使用しており、私のコードは C です (私は VS2012 を使用しています)

これは私のテキストファイルの内容です:

Bulwark Fury // Assign this string into player.name
Red Steel // Assign this string into player.title
230 // Assign this string into player.typenclass
21  // Assign this string into player.startstr
2.9  // Assign this string into player.incstr
16  // Assign this string into player.startdex
1.6 // Assign this string into player.incdex
16  // Assign this string into player.startintel
1.7 // Assign this string into player.incintel
44  // Assign this string into player.basemindmg
60  // Assign this string into player.basemaxdmg
1.7 // Assign this string into player.baseattacktime
1.24 // Assign this string into player.basearmor

コード:

typedef struct nodebase
{
    char name[20],title[20],type[15],Class[15];
    int typenclass;
    int startstr;
    double incstr;
    int startdex;
    double incdex;
    int startintel;
    double incintel;
    int basemindmg,basemaxdmg;
    double baseattacktime;
    double basearmor;
    struct nodebase *next;
    struct nodebase *curr;
    struct nodebase *prev;
}herostat;

static void stat_file(const char *file_name, herostat player)
{
    FILE *f = fopen(file_name, "r");// open the specified file
    if (f != NULL)
    {
        int c;
        while ((c = fgetc(f)) != EOF)// read character from file until EOF
        {
            fscanf(f,"%s\n%s\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",
                    &player.name, &player.title, &player.typenclass,
                    &player.startstr, &player.incstr, &player.startdex,
                    &player.incdex, &player.startintel, &player.incintel,
                    &player.basemindmg, &player.basemaxdmg,
                    &player.baseattacktime, &player.basearmor);
        }
        fclose(f);
    }
}

これを実行して変数を出力して、fscanfがうまく機能するかどうかを確認しました。

しかし、印刷されたのは乱数でした...

助けてください!

4

1 に答える 1