A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© socl_ycl 中级黑马   /  2015-9-16 14:07  /  1281 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请找出下面代码里的问题:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(void) {
  4.         char buff[10];
  5.         memset(buff,0,sizeof(buff));
  6.         gets(buff);
  7.         printf("\n The buffer entered is [%s]\n",buff);
  8.         return 0;
  9. }
复制代码



4 个回复

倒序浏览
欢迎大神来指导哦~~~
回复 使用道具 举报
定义的数组长度是10,但gets可以接收大于10的长度
回复 使用道具 举报
memset 是什么意思,感觉视频里面没有讲过呀
回复 使用道具 举报
上面代码里的问题在于函数gets()的使用,这个函数从stdin接收一个字符串而不检查它所复制的缓存的容积,这可能会导致缓存溢出。这里推荐使用标准函数fgets()代替。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马