我的程序做的一切都是正确的,但是程序没有询问用户任何事情,并且跳过了函数中的所有内容,你能看出哪里出了问题吗?所有功能都正常工作,因为它会打印“您确定要购买吗?”
我已经尝试将 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;
}
最佳答案
正如“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);
}
}
关于从c上的键盘输入字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36973616/