原代码:
int main()
{
char password[20] = { 0 };
printf("Please input your password:\n");
scanf_s("%s", password);
printf("Please sure your password(Y/N):");
int ch = getchar();
if (ch == 'Y')
{
printf("Success.\n");
}
else
{
printf("Fail.\n");
}
return 0;
}
修改代码:
scanf_s("%s", password,sizeof(password));
报错原因:
scanf() 不会检查输入边界,可能造成数据溢出。
scanf_s() 会进行边界检查。
scanf() 函数是标准C中提供的标准输入函数,用以用户输入数据。
scanf_s() 函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数,从vc++2005 开始,VS系统提供了 scanf_s() 。在调用该函数时,必须提供一个数字以表明最多读取多少位字符。
getchar() 会读取空格。