| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2148 人关注过本帖
标题:VS2015 中的scanf与scanf_s的问题
只看楼主 加入收藏
woshihuren88
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-8-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
VS2015 中的scanf与scanf_s的问题
刚刚接触vs2015,用的比较生疏,请大家指教:
程序代码:
#include "stdafx.h"
#include <stdio.h>
int main()
{
    char str;
    scanf("%c", &str);
    printf("this character is %c",str);
    return 0;
}
首先按套路,可scanf函数得不到正常的结果
图片附件: 游客没有浏览图片的权限,请 登录注册

vs推荐我用scanf_s,仍旧不能处理字符。
图片附件: 游客没有浏览图片的权限,请 登录注册

网搜说scanf_s处理字符串,成功!
图片附件: 游客没有浏览图片的权限,请 登录注册

此处scanf也不能处理字符串……
图片附件: 游客没有浏览图片的权限,请 登录注册

但scanf_s可以处理int,成功。
图片附件: 游客没有浏览图片的权限,请 登录注册


请问,这到底是什么情况?C语言学的比较早,是我学的过时了?还是一直学错了?还是现在的函数更新了?请问正确的该怎么用呢?

2016-08-23 17:34
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:20 
你的第三个图片已经贴了scanf_s的正确用法了。需要加入字符串长度参数。
VS只是认为scanf不安全而已,你按他的提示把那个宏加到编译选项里就能正常用了。
2016-08-23 18:16
woshihuren88
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-8-23
收藏
得分:0 
回复 2楼 grmmylbs
谢谢你,根据你说的问题已解决。
不过还想请问一下。出问题时,VS虽然报一个错误,但好像并没有禁止运行。
另外,加上一行添加一行内容_CRT_SECURE_NO_DEPRECATE作为宏,难道对字符或者数组的末尾加上了"\0"吗?
因此,先前没有采用这个方法,我仅认为内容_CRT_SECURE_NO_DEPRECATE仅起到压制报错,更没想到它能起决定作用。
2016-08-23 19:46
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
是的,加上宏只是防止报错而已,对代码的安全性并没有帮助。
2016-08-24 11:51
快速回复:VS2015 中的scanf与scanf_s的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032475 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved