我编了一个小程序,用fprintf写入几个账户记录,但是运行的时候写入了一个记录之后,程序就停止了。不知道是哪里写错了呢?请帮忙指点一下!
#include <stdio.h>
FILE *cfPtr;
int main(void)
{
int account;
char name[30];
double balance;
errno_t err;
err = fopen_s(&cfPtr, "clients.dat", "w");
if (err != 0){
printf( "File could not be opened.\n");
}/* End if */
else{
printf( "输入 账户、姓名、余额\n");
printf( "输入EOF以结束。\n");
printf( "? ");
scanf_s("%d%s%lf", &account, name, &balance);
while (!feof(stdin)){
fprintf( cfPtr, "%d %s %.2f\n", account, name, balance );
printf( "? " );
scanf_s( "%d%s%lf", &account, name, &balance );
}/* End while */
fclose( cfPtr );
}/* End else */
return 0;
}/* End main */
scanf_s在输入%c或者%s时,必须多传一个参数用以指定读取的长度,否则会出错
#include <stdio.h>
FILE *cfPtr;
int main(void)
{
int account;
char name[30];
double balance;
errno_t err;
err = fopen_s(&cfPtr, "clients.dat", "w");
if (err != 0){
printf("File could not be opened.\n");
}/* End if */
else{
printf("输入 账户、姓名、余额\n");
printf("输入EOF以结束。\n");
printf("? ");
scanf_s("%d%s%lf", &account, name, 30, &balance);
while (!feof(stdin)){
fprintf(cfPtr, "%d %s %.2f\n", account, name, balance);
printf("? ");
scanf_s("%d%s%lf", &account, name, 30, &balance);
}/* End while */
fclose(cfPtr);
}/* End else */
return 0;
}/* End main */