0

テキスト ファイルとバイナリ ファイルの両方から配列の読み取り、書き込み、データの取り込みができることを示す必要があるクラス用のこのプログラムがあります。私はバイナリ ファイルで多くの問題を抱えていませんでしたが、テキスト ファイルは非常に頭の痛い問題を引き起こしています。

この小さなコードが原因だと思います。userInputText[MAXSIZE] は char 配列 (MAXSIZE は 100000 に定義されています) であり、プログラムがこの時点にある場合、textCount と textCounter の両方がゼロに初期化されます。

textPointer = fopen("textFile.txt", "r");
if (textPointer) 
{
    while (fgets(userInputText, sizeof(userInputText), textPointer) != NULL)
    {
        sscanf(userInputText, "%d", &textCount);
        userInputText[textCounter] = textCount;
        textCounter += 1;
    }
}

ユーザーが最初にプログラムを実行すると、プログラムのこの部分はスキップされ、ユーザーはテキスト ファイルを作成して書き込むように求められます。ユーザーが整数を入力すると、テキスト ファイルに書き込まれて userInputText に格納され、プログラムの最後に画面に表示されます。すべてが正常に機能し、プログラムが実行されるたびにテキスト ファイルが正しく追加されます。上記のコードで考えられるすべての組み合わせを試しました。fopen(r+)、sizeof(int および MAXSIZE) を使用して、%d を試してみました。プログラムの後半の fprintf 部分で、「\n」を区切り文字として設定しましたが、それを削除しようとしました。freadのfgetsを切り替えました。問題にうんちを投げるヒヒに似ているところまで来ました。

私は怠惰で簡単な答えを探している、精神障害者かもしれませんが、怠け者ではないと人々に思われたくありません。

助言がありますか?

ありがとう、

マイク

4

1 に答える 1

0

試すwhile( !feof(textPointer) ) { fgets(userInputText,MAXSIZE,textPointer); }

sizeof(userInputText)char ポインターのサイズのみを返します。

于 2013-02-02T02:40:13.637 に答える