VS2017使用scanf

您所在的位置:网站首页 C语言发生访问冲突 VS2017使用scanf

VS2017使用scanf

2024-03-07 03:46| 来源: 网络整理| 查看: 265

#include #include int main(){ char *str= (char *)malloc(20*sizeof(char)); scanf_s("%s", str); printf("%s\n",str); }

       在使用VS2017时,应编译器要求需使用更加安全的scanf_s代替scanf,然而习惯scanf的语法后老是被这个scanf_s坑,特别是在写入字符串数组或者其它数组时经常会被坑,如上如所示。上述代码编译器不会报错,但调试时却出现图片中的异常,原因却是scanf_s在使用数组指针作为写入变量地址参数时,还需要加一个buffer长度参数,更安全(C程序员随时都要考虑内存溢出问题)如下所示:

#include #include int main(){ char *str= (char *)malloc(20*sizeof(char)); scanf_s("%s", str,20); printf("%s\n",str); }

现在就可以愉快地使用scanf_s了!

特别注意在使用scanf_s时,buffersize参数大小必须和定义的字符串数组一致,否则会出错读入乱码

char buf[10]; scanf_s("%s",buf,10);

       这里的参数10必须是与buf的大小一致,不能是小于10,也不能大于10,表示最多允许读入9个字符,最后一个自动加‘\0’, 输入



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3