1

在这个程序中,我试图在文件中输入文本数据,但它没有正确写入。

在我的主要,我得到数据的地方......

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”。而输入的第二个账号是1200,“第二个”

但我得到的是这样的:

1200:Second
1000:First

当我'cat accounts.dat' ..第二个输入在我的第一个输入之前。为什么是这样?


问题是我在做

fp1 = fopen("accounts.dat", "a+");

每次我调用该函数时,我都可以在文件调用中传递参数,但在我摆脱它之后它可以正常工作。

解决它。

4

0 回答 0