このプログラムでは、ファイルにテキスト データを入力しようとしていますが、正しく書き込まれません。
私の主に、私が持っているデータを取得する場所...
FILE *fp1 = NULL;
fp1 = fopen("accounts.dat", "a+");
printf ("\nEnter an account number (between 1000 and 5999): ");
accounts[i] = validateaccount();
printf ("Enter title for new account %d: ", accounts2[i]);
validatestring(accname, &i);
scan(accounts, accname, &i);
「validateaccount()」と「validatestring()」は、アカウント/文字列値を取得する他の関数を呼び出します。の中に
scan(accounts, accname, &i);
検証関数から与えられた値をファイルに書き込んでいます。
void scan (int accounts[MAX], char accname[MAX][MAXSTRING], int *i) {
FILE *fp1;
fp1 = fopen("accounts.dat", "a+");
fprintf(fp1, "%d", accounts[*i]);
fprintf(fp1, ":");
fprintf(fp1, "%s\n", accname[*i]);
}
したがって、ファイル入力の形式は次のようになります
1000:First
1200:Second
アカウント番号が 1000 で、名前が「First」の場合。そして2番目に入力されたアカウントは1200で、「2番目」
しかし、私が得るのは次のようなものです:
1200:Second
1000:First
「cat accounts.dat」と入力すると、2 番目の入力が最初の入力よりも先になります。どうしてこれなの?
問題は、私がやっていたことでした
fp1 = fopen("accounts.dat", "a+");
ファイル呼び出しで引数を渡すことができたときに関数を呼び出すたびに、それを取り除いた後、正しく機能しました。
修正しました。