【例1.2】求两个整数之和。
【例1.2】求两个整数之和。
解题思路:设置3个变量,a和b用来存放两个整数,sum用来存放和数。用赋值运算符“=”把相加的结果传送给sum。
这里只列举了一种代码实现如果要看其他代码实现可以到我的:
GitHub:三种代码风格
我的答案:
#include<stdio.h>
int main() {
int a = 0, b = 0, sum = 0;
scanf_s("%d %d", &a, &b);
sum = a + b;
printf("%d", sum);
return 0;
}
正确答案:
#include<stdio.h>
int main()
{
int a, b, sum;
a = 123;
b = 456;
sum = a + b;
printf("sum is %d\n", sum);
return 0;
}
五、实现过程遇到的问题:
问题1:出现了问题首先在dec C中可以用scanf但是在vs2022中scanf识别为不安全
解决的办法:
1.头文件输入#pragma warning(disable:4996)
2.右击工程中源代码(main.c)处,打开属性栏>配置属性>C/C++>所有选项,将SDL检查改为否,保存
3.把scanf改成scanf_s
七、疑问
为什么vs2022不行但是devc++可以?
Visual Studio 2022 提供了很多安全功能和警告,以帮助开发人员编写更加安全和健壮的代码。以下是为什么 Visual Studio 2022 要将 scanf
等函数标记为不安全,并推荐使用安全版本的原因:
1. 缓冲区溢出风险
scanf
等函数在处理用户输入时没有对输入的长度进行严格检查,这可能会导致缓冲区溢出(Buffer Overflow)。缓冲区溢出是指数据超过了分配的存储空间,覆盖了相邻内存区域。这种漏洞可能被恶意用户利用来执行任意代码,导致安全问题。
2. 增强代码的安全性
为了提高代码的安全性,Microsoft 提出了很多更安全的函数,例如 scanf_s
、fgets_s
等,这些函数需要指定输入缓冲区的大小,从而防止缓冲区溢出。
3. 代码可维护性
安全版本的函数通过明确指定缓冲区大小,增强了代码的可读性和可维护性,使得其他开发人员更容易理解代码的意图和限制。
4. 编码规范和最佳实践
现代开发工具和编程规范都建议使用更安全的编码实践。通过引入这些警告和建议,Visual Studio 2022 帮助开发人员遵循这些最佳实践,写出更安全、可靠的代码。
具体示例说明
不安全的 scanf
scanf
不检查输入的长度,如果用户输入的数字过多,可能会导致内存溢出。
int main() {
int a = 0, b = 0;
scanf("%d %d", &a, &b); // 不安全
return 0;
}
安全的 scanf_s
scanf_s
需要提供额外的参数来指定输入缓冲区的大小,从而防止缓冲区溢出。
int main() {
int a = 0, b = 0;
scanf_s("%d %d", &a, &b); // 安全
return 0;
}
为什么要使用安全版本的函数?
- 防止缓冲区溢出:通过指定输入缓冲区的大小,可以有效防止缓冲区溢出,避免潜在的安全漏洞。
- 提高代码的健壮性:安全版本的函数可以更好地处理异常情况,使得代码更加健壮。
- 遵循最佳实践:使用安全版本的函数是现代编程的最佳实践,能够提高代码质量和可维护性。
总之,Visual Studio 2022 提供这些安全功能和警告,目的是帮助开发人员编写更加安全和健壮的代码,避免常见的安全漏洞,提高软件质量。
八、总结
1.学到了什么?
学到了代码风格1中的两种代码风格一种是加前缀一种是改函数提供了两条思路。
1.第一种和第三种都选择成我的代码风格方法2有溢出风险就算了
标签:1.2,int,scanf,安全,谭浩强,sum,缓冲区,例题,代码 From: https://blog.csdn.net/tang7mj/article/details/139509570