读书人

初学者求帮忙查错

发布时间: 2012-09-08 10:48:07 作者: rapoo

菜鸟求助求帮忙查错
求问,为什么这个程序每次运行都会报告“停止工作”

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

读书人网 >C++

热点推荐