菜鸟求助求帮忙查错
求问,为什么这个程序每次运行都会报告“停止工作”
- C/C++ code
#include<stdio.h>int main(){ int request; int account; double balance; char name[30]; FILE *cfPtr; if(cfPtr=fopen("clients.dat","r")==NULL){ printf("FILE could not be opened"); } else{ printf("Enter request\n" "1-List accounts with zero balances\n" "2-List accounts with credit balances\n" "3-List accounts with debit balances\n" "4-End of run\n?"); scanf("%d",&request); while(request!=4){ fscanf(cfPtr,"%d%s%lf",&account,name,&balance); switch(request){ case 1: printf("\nAccounts with zero balance:\n"); while(!feof(cfPtr)){ printf("%-10d%-13s%7.2f\n",account,name,balance); } fscanf(cfPtr,"%d%s%lf",&account,name,&balance); break; case 2: printf("\nAcounts with credit balances:\n"); while(!feof(cfPtr)){ if(balance<10){ printf("%-10d%-13s%7.2lf", account,name,balance); } fscanf(cfPtr,"%d%s%lf",account,name,balance); } break; case 3: printf("\nAccounts with debit balances:\n"); while(!feof(cfPtr)){ if(balance>10){ printf("%-10d%-13s%7.2lf",account,name,balance); } fscanf(cfPtr,"%d%s%lf",&account,name,&balance); } break; } rewind(cfPtr); printf("\n?"); scanf("%d",&request); } printf("End of run.\n"); fclose(cfPtr); } return 0; }[解决办法]
case 2 里面的 fscanf 语句,account 和 balance 前没加&。
另:case1 里面的 fscanf 没放到循环里面。
[解决办法]
fscanf(cfPtr,"%d%s%lf",account,name,balance);
//&balance