【C语言】警告:“scanf_s”: 没有为格式字符串传递足够的参数

原代码:

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()  会读取空格

猜你喜欢

转载自blog.csdn.net/m0_64432537/article/details/123975468