重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这是对程序产生BUG,出现不可靠性的一个描述,有些函数在某些意外情况会导致程序陷入不可控状态,仅仅是PC上运行最多也就是退出而已,但是如果是运行在飞机等系统里的话,就会有大麻烦,说危险也不为过。因为英文文献里描述为dangerous,所以也就翻译为危险。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了宁乡免费建站欢迎大家使用!
函数执行需要一个栈空间,但这个栈空间容量是有限的,而且栈里存放了函数返回的地址。
gets()函数在获取输入时,如果无限输入会造成栈空间溢出,在程序返回时,不能正常的找到返回地址,程序将发生不可预测行为
让人分析代码,至少要把代码贴出来运行啊,总不可能抄写你的代码吧!
gets和scanf()的区别就是前者接收空格、制表符Tab和回车等,遇见EOF停止!而后者遇见空格、制表符Tab和回车等就停止;
数组只能存1234\0;后面的56789都是越界的;为什么到8没有关系,而是9崩溃是因为你运气好,空闲内存还有;第9个刚好访问了其他程序的内存!
而为什么puts和printf可以打印到8是因为再8后面才遇到'\0';
为什么for只输出4个数;是因为你用的32位编译器,所以sizeof(st)==4;如果你用64的编译器,那么sizeof(st)==8;因为指针大小再32是4个字节,64位8个字节!
好了,老板的4个问题都帮你分析了!给财富值200;
gets确实是不安全的,因为无法知道该函数返回的数据有多长。
安全的用法是用fgets替代gets