私は何時間もこのファイルを 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
変数は、配列インデックスを修正するためのものです。
最初の文字列が読み込まれます (# カテゴリ)
が含まれている場合は、それがどのカテゴリであるかを覚えて、 ( is 0)
'\#'
に入れますslova[i].kategoria
i
他の 2 つをチェックしてインクリメントします。
i
2 番目の文字列が読み取られます (
-
推測する単語)1つ目
if
は false です。2 つ目は、文字列に が含まれている場合、'-'
それをslova[i-j].slovo
(i
is 1,j
is 1 soi - j = 0
) に入れますj
。次のステップで、プログラムがユーザーを支援するために情報を読み取ろうとするときに、それがインクリメントされます。もi
2 になり、再び0 になります。そしてやはり、この3本の弦が構造体の中にあるはずです。しかし、それは機能せず、理由がわかりません。j
i - j
slova[0]
誰かが答えを知っているなら、私を助けてください。