pypsrand 发表于 2018-2-10 22:10:52

c 指针的课堂示例

#include<stdio.h>
int main()
{
        char str;
        printf("请输入字符串:");
        scanf_s("%s", str);
        printf("str:%s\n", str);
        printf("str的地址为:%p\n", str);
        printf("str第一个字符的地址为:%p\n", str);
        return 0;
}

按照视频输入的,请问是我遗漏了什么吗?

ba21 发表于 2018-2-10 22:12:12

scanf_s("%s", str);有3个参数
很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。比如:char d;写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。

ba21 发表于 2018-2-10 22:12:26

很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素。比如:char d;写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。

pypsrand 发表于 2018-2-10 22:55:04

ba21 发表于 2018-2-10 22:12
很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素。比 ...

谢谢解答,我加了大小值后,可以运行了,但str 和str的位置输出不一致,请问,按常理来说是不是应该一致?
页: [1]
查看完整版本: c 指针的课堂示例