したがって、ファイル内のテキストは次のようになります。
locked y
locked n
position 90
position 2
audio-language "english"
audio-language "spanish"
各テキスト ファイルには、上記の 1 種類の設定のみが含まれます。違いは、オプション (y または n、1 ~ 999、「英語」、「スペイン語」、「その他」) で、前に 4 つの空白があり、次の行に改行があります。各行の終わりなので、char配列文字列でパラメーターを抽出するfscanfが必要ですが、区切り文字を正しく使用する方法を理解できないようです。そのファイルをスキャンして、さまざまな設定と、それらがファイル内で見つかった回数を印刷できるプログラムを作成する必要があります。たとえば、次のようになります。
audio-language is found with setting: "spanish" 40 times
audio-language is found with setting: "english" 78 times
皆様、ご回答ありがとうございます!ここで、私がどのようにそれを機能させたかを示すことができます:
1 - 最初に、設定の前の空白を削除する関数 (インターネットで見つけたもの) を使用します。
char* ltrim(char* s)
{
char* newstart = s;
while (isspace( *newstart)) {
++newstart;
}
// newstart points to first non-whitespace char (which might be '\0')
memmove( s, newstart, strlen( newstart) + 1); // don't forget to move the '\0' terminator
return s;
}
2 - 次に、fscanf は行を正しく取得するのに問題はありません。
while(!feof(fpoo)) {
fscanf(fpoo,"%s %[^\n]",&first, &sec);
3 - 次に、fscanf が取得したものとユーザーが入力したものを比較します
それだけです。どうやらfscanfの全体的な問題は、すべての行の前にある空白が原因だったようです。