2016-05-02 116 views
0

我的程序做的都是正確的,但是程序並沒有要求用戶啓動並且跳過了函數中的所有內容,你能看到什麼是錯誤的嗎?所有功能都能正常工作,因爲它能打印出「你確定要購買?」鍵盤上的字符輸入c

我已經嘗試將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

的可能的複製[scanf函數無法正常運行(http://stackoverflow.com/questions/34459857/scanf-not-working -as-expected) – mpromonet

回答

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); 
    } 
} 
+0

評論是'//'而不是'\\\' – mpromonet