关于scanf函数安全问题

为什么我用scanf的时候即使在最前面定义了#define _CRT_SECURE_NO_WARNINGS解决了
安全问题之后只能输出第一行打印的文字,输入一个字母之后就闪退了?![图片说明](https://img-ask.csdn.net/upload/201509/24/1443106227_43116.png)图片说明

2个回答

%d需要读取4个字节,你要这么写:
int x = (int)ch;
printf("%c %d", ch, x);

nishajuxia5058
闲敲棋子落灯花- 不过即使这样还是无法打印出码值啊,我输入a之后还是会exe直接退出,有什么办法呢?
4 年多之前 回复
nishajuxia5058
闲敲棋子落灯花- 要分别在两个printf下输入getchar,输入system pause必须在结尾,否则后面的无法打印。
4 年多之前 回复
nishajuxia5058
闲敲棋子落灯花- 加上system(pause)也不行啊,,,,
4 年多之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 回复nishajuxia5058: 加上system("pause")
4 年多之前 回复
nishajuxia5058
闲敲棋子落灯花- 恩恩,试过了,在char ch上加了之后,输入字符a之后又是exe已退出。。。为什么输入了getchar不能让system输出码值呢?
4 年多之前 回复

你的代码,就是想输入一个字符,而不是想要字符串。将 %c 改为 %s,在加上接受输入的变量试试。

nishajuxia5058
闲敲棋子落灯花- 但是输入一个字符就是用%c的啊
4 年多之前 回复
nishajuxia5058
闲敲棋子落灯花- 怎么修改变量?
4 年多之前 回复
91program
91program 回复nishajuxia5058: 应该是越界访问了,你修改了变量吗?可能是你使用变量无法存贮下输入的数据。
4 年多之前 回复
nishajuxia5058
闲敲棋子落灯花- 0x00007FFCAE545EE8 (ucrtbased.dll) (Project5.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x0000000000000061 时发生访问冲突。 如有适用于此异常的处理程序,该程序便可安全地继续运行。就这个警告,大师什么情况?怎么办?
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问