我正在做C编程作业。我面临一个问题,即用户在scanf函数中键入的变量始终输出相同的内容。

void Update(char mCode, int mPrice)
{
 printf("Enter Code: ");
 scanf("%s",&mCode);

 printf("Enter Selling Price: ");
 scanf("%d",&mPrice);
}

int main(void)
{
....
update(stuff[i].mCode,stuff[i].mPrice);
fp = fopen("readme.txt","a+");
fprintf(fp, "%s %d\n", stuff[i].mCode, &stuff[i].mPrice);
....
return 0;
}


我在readme.txt中得到的结果是mPrice为0,mCode为空白。

最佳答案

变量mCodemPrice是函数Update中的局部变量。

这样,它们仅在此功能中本地更新。

进行如下更改:

void Update(char* mCode, int* mPrice)
{
    printf("Enter Code: ");
    scanf("%s",mCode);
    printf("Enter Selling Price: ");
    scanf("%d",mPrice);
}

int main(void)
{
    ....
    update(&stuff[i].mCode,&stuff[i].mPrice);
    fp = fopen("readme.txt","a+");
    fprintf(fp, "%s %d\n", stuff[i].mCode, &stuff[i].mPrice);
    ....
    return 0;
}

10-06 14:28