我有一个课程要快速完成,这要求我能够以某种方式调试代码。为了完成作业,我必须能够运行我已经给出的程序并使用断点来逐步指导程序。我们给出的程序是ATM的基本视图,并且存在许多错误。
请不要修复代码中的错误,但有人可以告诉我,我收到的与scanf_s
行有关的错误可以做些什么,因为我一直收到错误'对scanf_s
的未定义引用'代码如下:
/* This program has been altered purposefully
so that it contains problems.
Use the program to complete P2-Debugging a program
Remember to take screenshots of you do the following:
Adding a breakpoint at an appropriate point
Stepping into functions (F11) and over each line of code (F10)
Changing variables and altering other code, e.g. changing messages
Watching the values of variables.
Add comments to the code before taking screenshots.
Fix the problems if you can. Otherwise, just add comments to the code
indicating where you think the problems are and what the solution might be.
Place all evidence into one Word Document and submit it.
Can you add other improvements?
*/
#include <stdio.h>
int getOption()
{
int option=0, nl;
printf("\nWelcome to the ATM\n");
printf("\nMenu\n");
printf("\n1. Withdraw Cash\n");
printf("\n2. Show Balance\n");
printf("\n3. Exit\n");
printf("\nEnter a number from 1 to 3:");
option = scanf_s("%d%c", &option, &nl);
return option;
}
//function to allow you to withdraw cash
int withdrawCash()
{
float amount;
int nl, option;
printf("\nHow much money do you want?");
amount = scanf_s("%d%c", &option, &nl);
return option;
}
//function to show you your balance
int getBalance()
{
float balance = 10000;
int nl, option;
printf("\nHow much money do you want?");
balance = scanf_s("%d%c", &option, &nl);
return balance;
}
//function to update your balance
int updateBalance(float balance, float amount)
{
int nl, option;
balance = balance - amount;
return balance;
}
// main function - start here
int main(void)
{
int ch;
int opt = 0;
int amount = 0;
int balance = 0;
float newbal = 0.0;
opt = getOption();
printf("\nYou chose option %d\n", opt);
if (opt == 1)
{
amount = withdrawCash();
newbal = updateBalance(10000, amount);
printf("\nHere is your %d, your balance is:\n", amount, newbal);
}
if (opt == 2)
{
balance = getBalance();
printf("\nHere is your balance: %d\n", balance);
}
printf("\nThank you. Please take your card.\n");
ch = getchar();
return 0;
}
答案 0 :(得分:0)
Code like有一个链接器问题,并且错误地使用scanf_s()
。
scanf_s()
预计每个"%s"
,"%["
和"%c"
有2个参数:char *
地址和rsize_t
大小。
// scanf_s("%d%c", &option, &nl);
scanf_s("%d%c", &option, &nl, (rsize_t) 1);
答案 1 :(得分:-1)