关于VS2017的要求

编译器vs2017有很多要求都和别的编译器不一样,记录一下这些不同的地方。

1.strcat函数

如下列代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	char str1[30] = "People's Republic of ";
	char str2[6] = "China";

	printf("%s", strcat_s(str1, str2));

	system("pause");
	return 0;
}

按照vs2017对于安全性检查的要求这里strcat要用strcat_s,但是改成strcat_s后打印的结果是

这串代码在别的编译器上用strcat是正确的所以我就用

#pragma warning(disable : 4996)

禁用了vs2017对strcat_s的安全性检查

结果就没有问题了。

另外一种解决方案如下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
 char str1[30] =  "People's Republic of " ;
 char str2[6] =  "China" ;
 str1[40] = strcat_s(str1, str2);
 printf("%s", str1);

 system("pause");
 return 0;
}

将str1[40]替换为strcat_s(str1,str2)然后直接打印str1得到的结果也是正确的。

2.scanf_s("%s")输入字符串

#include <stdio.h>
#include <stdlib.h>
#define PRAISE "You are an extraordinary being."
int main(void)
{
	char name[40];

	printf("What's your name?\n");
	scanf_s("%s",name);
	printf("Hello,%s.%s\n", name, PRAISE);
	system("pause");

	return 0;
}

如上代码,如果在别的编译器上会直接运行成功但是在vs2017上运行则会出现这种情况

向编译器输入字符串后无法执行后续操作了

解决办法时在scanf_s("%s", name);的括号部分name后面加上字符串的长度,即改为

scanf_s("%s",name,40);

才可以运行成功,结果为

这是我使用vs2017以来所了解到的各项与别的编译器不同的要求。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值