C++基础知识 - (scanf)(gets)(cin)常见错误

这篇博客介绍了在VS2019中使用C++时,由于C11标准的安全考虑,遇到scanf、gets和cin输入函数的常见错误。针对这些问题,提供了相应的解决方案,如使用安全函数替代,或调整cin的判断方式。
摘要由CSDN通过智能技术生成

不安全函数(scanf)

VS2019中不能直接使用scanf等C标准库函数
因为vs使用更安全的c11标准, 认为这类函数不安全。

  • 解决方案:
    1.方法1:使用修改项目的属性,直接使用这些“不安全”的函数。
    添加: /D _CRT_SECURE_NO_WARNINGS
    在这里插入图片描述

2.方法2:使用c11标准中的“更安全”的函数
scanf_s

#include <stdio.h>

int main(void) {
   
	int num;
	char a[64];
	
	//scanf("%d", &num);	
	//解决方法, 使用scanf_s()
	scanf_s("%d", &day);	//整数类型不需要在尾部添加长度
	scanf_s("%s", a, 64);	//字符数组需要在尾部添加数组的长度

	system("pause")
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中,可以使用scanf函数来读取字符串。在引用\[1\]中的示例代码中,使用了scanf_s函数来读取字符串。scanf_s函数的用法是scanf_s("%s", str, (unsigned int)sizeof(str)),其中str是用来存储字符串的字符数组,sizeof(str)表示str数组的大小。这样可以确保读取的字符串不会超出数组的范围。另外,在C++11中,不推荐使用scanfgets函数,因为它们被认为是不安全的。推荐使用scanf_s和gets_s函数来读取字符串。\[2\] 另一种读取字符串的方法是使用string类。在引用\[3\]的示例代码中,使用了string类来接收字符串输入。可以使用cin对象的>>运算符来读取字符串,例如cin >> s,其中s是一个string对象。这种方法可以方便地读取包含空格的字符串。 #### 引用[.reference_title] - *1* *2* [浅谈C/C++字符串输入scanfgetscin、getline、getchar](https://blog.csdn.net/qq_14824921/article/details/124356747)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C/C++ 中输入字符串的几种方式](https://blog.csdn.net/m0_64604482/article/details/129249732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值