0

私は何時間もこのファイルを C プログラミング プロジェクトで使用したい構造に読み込もうとしました。私はそれを構造で適切に機能させることができません。

読みたいファイルは次のとおりです。

# category
- word to guess
*information to help you to guess the word

- another word to guess
* information to help you to guess the word

# another category
- word to guess
*information to help you to guess the word

- another word to guess
* information to help you to guess the word

これが私のコードです(動作していないようです):

char retazec[50]; // here goes the read in string from the file
char kategoria[50]; // here the category name is stored

i = 0; // index for the array of structures
j = 1;
while (!feof(otazky)) {
    fgets(retazec, 50, otazky);
    if (strchr(retazec, '#') != NULL) {
        printf("%s", retazec);
        printf("%d\n", i);
        slova[i].kategoria = retazec;
        strcpy(kategoria, retazec);
    }
    if (strchr(retazec, '-') != NULL) {
        printf("%s", retazec);
        printf("%d\n", i-j);
        slova[i-j].slovo = retazec;
        j++;
    }
    if (strchr(retazec, '*') != NULL) {
        printf("%s", retazec);
        printf("%d\n", i-j);
        slova[i-j].napoveda = retazec;
        j++;
    }
    i++;
}

putchar('\n');
putchar('\n');
printf("%s", slova[0].kategoria);
printf("%s", slova[0].slovo);
printf("%s", slova[0].napoveda);

私はそれがどのように機能することを望んでいましたか:

i構造体の配列のインデックスを格納する変数があります。j変数は、配列インデックスを修正するためのものです。

  1. 最初の文字列が読み込まれます (# カテゴリ)

  2. が含まれている場合は、それがどのカテゴリであるかを覚えて、 ( is 0)'\#'に入れますslova[i].kategoriai

  3. 他の 2 つをチェックしてインクリメントします。i

  4. 2 番目の文字列が読み取られます (-推測する単語)

  5. 1つ目ifは false です。2 つ目は、文字列に が含まれている場合、'-'それをslova[i-j].slovo( iis 1, jis 1 so i - j = 0) に入れますj。次のステップで、プログラムがユーザーを支援するために情報を読み取ろうとするときに、それがインクリメントされます。もi2 になり、再び0 になります。そしてやはり、この3本の弦が構造体の中にあるはずです。しかし、それは機能せず、理由がわかりません。ji - jslova[0]

誰かが答えを知っているなら、私を助けてください。

4

3 に答える 3