关于scanf和scanf_s的注意事项及问题
来源:互联网 发布:免费图文识别软件 编辑:程序博客网 时间:2024/03/29 15:22
1、scanf()是标准化格式输入,使用过程中需注意:在读入单个字符且格式说明符为%c时,空格、制表符、换行符也会被当做一个字符被输入。故字符最好不要和数据同时输入(个人理解,暂时没有找到解决问题的办法,文章后面有例子),可以使用getche()读一个字符再用scanf()读其他变量值。
2、scanf_s()是scanf()的扩展,也叫做安全函数,它能够解决字符输入超限溢出问题。如:
char code[10];
scanf(“%s”,&code);
当输入字符超过10时,就会溢出,也就是说scanf函数负责输入所有的输入字符,当输入超过数组大小时就会溢出;而使用scanf_s()如下:
char code[10];
scanf_s(“%s”,&code,10);
这个函数会进行参数检查,如果输入超过10个则只接受10个字符(参数传入),如果不超过10个则正常接收数据。
附错误用例:(要求在一行输入三个参数,一个字符,两个整形变量。一运行到这里就会终止程序)
char commond;
unsigned int A, B;
scanf("%c%d %d",&commond,1, &A, &B);
解决用例:
char commond;
unsigned int A, B;
commond = _getche();
scanf("%d %d", &A, &B);
- 关于scanf和scanf_s的注意事项及问题
- scanf_s和scanf区别
- scanf和scanf_s
- scanf() 与 scanf_s() 的区别
- scanf与scanf_s的区别
- scanf() 与 scanf_s() 的区别
- 关于scanf和&的问题
- C语言中 scanf_s和 scanf 区别
- 关于scanf_s的学习
- scanf()函数与scanf_s()函数的区别
- 关于使用VS时出现scanf有错误要改用scanf_s的处理方法
- 关于scanf与scanf_s的区别,以及用scanf编译出错并且提示找不到可执行文件.exe的解决办法。
- 关于scanf的问题
- scanf和scanf_s、strcpy和strcpy_s、strncpy、gets
- scanf()与scanf_s()
- scanf与scanf_s比较
- VS2015 scanf() scanf_s
- scanf_s输入%s的问题
- 分类-2-softmax
- MySQL学习笔记8(插入、更新、删除数据)
- 【jdk1.8】PriorityQueue源码分析
- 3.30-4.3 知识小总
- java常用加密算法
- 关于scanf和scanf_s的注意事项及问题
- 1002. 写出这个数 (20)
- POJ 2431 Expedition
- 游戏分类
- [ERROR] Could not create unix socket lock file /var/run/mysql/mysql.sock.lock
- 欢迎使用CSDN-markdown编辑器
- 鼠标滚轮事件
- Java IO流基础
- 1003. 我要通过!(20)