c上键盘的char输入

时间:2016-05-02 00:45:43

标签: c input char printf

我的程序做的一切正确,但程序没有要求用户进行调查并跳过函数中的所有内容,你能看出错误吗?所有功能都能正常工作,因为它会打印出#34;您确定要购买吗?"

我已经尝试将printf移动到该功能中,它仍然出现在屏幕上,所以它就在它之后。

void shopBuy (){
    char input [50];
    char nameprice [80];
    char price [5];
    char myMoney [100];
    int money=0,mymoney;
    printf("What do you want to buy?\n");
    scanf("%s",&input);
    getPrice(nameprice,input);
    last3(nameprice,price);
    money=atoi(price);
    printf("It costs: $%d\n",money);
    FILE *fp;
    fp = fopen("money.txt", "r");   
    fgets(myMoney, 80, (FILE*)fp);
    fclose(fp);
    mymoney=atoi(myMoney);
    if (mymoney>money)
    {
        printf("Are you sure you want to buy?(y/n)\n");
        acceptBuy(mymoney,money);
    }
    else{
        denyBuy();
    }
}

void acceptBuy(int m,int p){
    int afterbuy;
    char a;
    char afterbuyString [100];
    scanf("%c",&a);
    if(a=='y'||a=='Y'){
        afterbuy=m-p;
        itoa(afterbuy,afterbuyString,10);
        FILE *fp;
        fp = fopen("money.txt", "w+");
        fprintf(fp, afterbuyString);
        fprintf(fp, "\n");
        fclose(fp);
    }
}

int main(void){
    shopBuy();
    return 0;
}

1 个答案:

答案 0 :(得分:1)

正如“user3121023”所说,它需要“%c”后面的空格。

所以功能是:

void acceptBuy(int m,int p){
    int afterbuy;
    char a;
    char afterbuyString [100];
    scanf(" %c",&a); // note the space.
    if(a=='y'||a=='Y'){
        afterbuy=m-p;
        itoa(afterbuy,afterbuyString,10);
        FILE *fp;
        fp = fopen("money.txt", "w+");
        fprintf(fp, afterbuyString);
        fprintf(fp, "\n");
        fclose(fp);
    }
}