博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于课堂上Exercise#1的讨论
阅读量:4968 次
发布时间:2019-06-12

本文共 775 字,大约阅读时间需要 2 分钟。

Software Testing_1b-rev page17

Exercise#1

代码内容:

#include 
int main(void){ char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf(“\n The buffer entered is [%s]\n”,buff); return 0; }

这段代码是否存在问题。。。

据我所猜,老师布置的这个作业中没有存在代码的语法问题。那么,问题应该就存在于从数据层面上。

gets()函数是从标准输入设备中读取字符串的函数,但是它可以无限读取,不会判断上限,以回车结束读取。所以,无法限制输入的字符数量的大小。儿buff被定义为一个容量大小只有10的字符数组,当输入的内容超过上界时,程序便会发生溢出。

通过CodeBlocks进行了一下代码测试:(将代码转换成了C++,虽说这样很不科学,但是为了避免使用C语言时的不方便...嗯,你懂的!)

代码如下:

#include 
#include
#include
using namespace std;int main(){ char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); cout<<"The buffer entered is "<

 

很明显,当输入的数据发生溢出时,程序被迫停止运行。

 

转载于:https://www.cnblogs.com/ccvamy/p/4338029.html

你可能感兴趣的文章
P3565 [POI2014]HOT-Hotels
查看>>
MongoDB的简单使用
查看>>
hdfs 命令使用
查看>>
prometheus配置
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
python 多进程和多线程的区别
查看>>
sigar
查看>>
iOS7自定义statusbar和navigationbar的若干问题
查看>>
[Locked] Wiggle Sort
查看>>
deque
查看>>
Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
查看>>
Python模块调用
查看>>
委托的调用
查看>>
c#中从string数组转换到int数组
查看>>
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
toad for oracle中文显示乱码
查看>>