2016-05-02 11 views
0

私のプログラムはすべてのことを正しく行いますが、プログラムはユーザーに不安を尋ねたり、関数内のすべてをスキップしたりすることはありません。すべての機能は正常に動作します。なぜなら、「あなたは購入してもよろしいですか?キーボードから入力した文字列

私はすでに関数に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

非常に多くの重複:([期待通りに動作しないのscanf]の( –

+0

可能な重複(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