求助有关scanf_s的问题
本帖最后由 叠加态的猫 于 2016-1-18 23:44 编辑求教,以下代码,手动输入hell,printf出值为空!?查看字符串内存为0,请问是怎么回事?
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
char b; //= {"hell"};
scanf_s("%s",&b);
printf("%s\n", b);
warn:
do
{
printf("请输入4个10以内互不相同的正整数:");
scanf_s("%d", &b);
printf("%d\n", sizeof(b));
printf("%d\n", b);
} while (b >= 10000 || b <= 999); //这是要干嘛 人造人 发表于 2016-1-18 23:44
warn:
do
额。。。其实原意是保证输入的数是4位的。。。已经废弃了,,,题目已经更新,,,请帮我看看简化描述后的问题呗,,,就是有关scanf输入字符串后内存查不到变化的问题。。。 叠加态的猫 发表于 2016-1-18 23:47
额。。。其实原意是保证输入的数是4位的。。。已经废弃了,,,题目已经更新,,,请帮我看看简化描述后 ...
scanf_s("%9s", s, _countof(s)); // buffer size is 10, width specification is 9
来自msdn #include <stdio.h>
#include <stdlib.h>
void main(void)
{
char b; //= {"hell"};
scanf_s("%s", &b, sizeof (b));
printf("%s\n", b);
} scanf_s("%s",&b);
应该改为:
scanf_s("%s", b, 5);
数组名即可,不用加 & int a={2,3,4,5};
这句是定义数组并赋值,
a表示的是数组的第一个数的地址,和&a一样。
a+1 表示的是第二个数组的地址,和&a一样
&a+1 表示的是第数组末尾地址,和&a+sizeof(int)*5 一样。(这个我在编译器里面调试看到的结果,也不知道什么原因) 小甲鱼 发表于 2016-1-19 03:47
scanf_s("%s",&b);
应该改为:
老师,scanf_s 需要3个参数吧
scanf_s没用过 不知道。。。。不过scanf_s真的是3个参数的,不过可以省略
ps:scanf函数有溢出漏洞哦
页:
[1]