在Visual Studio 中出现scanf用不了的情况及解决办法

在新手使用vs的时候用不了scanf并报错时时

原因是因为微软不支持使用scanf这个函数。解决办法有两点

方法一:

#define _CRT_SECURE_NO_WARNINGS

  在主函数前加上这个

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	//printf("hehe\n");
	//return 0;
	int a = 0;
	scanf("%d", &a);
	printf("%d\n", a);
	return 0;
}

但是如果每次写代码都要在前面加这一段代码会十分不方便,所以我有了方法二

方法二:

在vs中不管是创建头文件还是源文件,原理都是调用vs安装包里的一个名为

newc++file.cpp的文件,所以我们需要将上面那句代码放到这个文件夹里。

如果我们直接搜索这个文件夹会十分麻烦,我们需要下载一个名为everything的软件

在下载完成后搜索newc++file.cpp这个文件

右击鼠标点击打开路径

用记事本/写字板打开,再将代码复制进去。

若出现没有权限的问题,可以将文件拷贝到桌面/或其他有权限的文件夹

在拷贝到桌面后,放入代码,然后在将文件烤回原来的路径,并替换原来的文件

弄完了之后我们在vs里测试一下弄好了没有

在新建一个.c文件,我们发现这行代码就自动导入了。

以后我们就不会因为scanf用不了而烦恼了。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`scanf` 和 `scanf_s` 都是 C 语言和 C++ 语言用于输入数据的函数,但它们有一些不同之处。 `scanf` 有一个潜在的安全问题,因为它无法确保输入的数据不会超出你为其分配的内存空间。这可能导致缓冲区溢出和其他安全漏洞。为了解决这个问题,C11 标准引入了 `scanf_s` 函数。 `scanf_s` 需要额外的参数,用于指定缓冲区的大小。当输入数据时,`scanf_s` 会检查输入内容的大小是否超过缓冲区的大小,如果超过了,就会停止输入操作并返回一个错误代码。这可以有效地防止缓冲区溢出和其他安全漏洞。 举个例子,假设我们要输入一个字符串,我们可以使用以下代码: ``` char str[10]; scanf("%s", str); // 潜在的安全问题 ``` 使用 `scanf`,输入的字符串长度可能会超过 `str` 的长度,导致缓冲区溢出。而使用 `scanf_s`,我们需要指定缓冲区的大小,如下所示: ``` char str[10]; scanf_s("%9s", str, 10); // 安全的输入方式 ``` 这里,`%9s` 表示最多输入 9 个字符,因为我们需要为字符串留出一个空字符的位置。因此,我们需要将缓冲区大小指定为 10。 总之,`scanf_s` 是一种更安全的输入方式,可以避免常见的安全漏洞。但需要注意的是,`scanf_s` 是 C11 标准引入的函数,可能不被所有编译器支持。如果你需要跨平台使用,请考虑使用其他安全的输入方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值