string2[size-i]=string1[i];
string2[size+1]=‘\0’;
printf("thechangedstringis%s\n",string2);
}
实验步骤:
(1):
先将该程序代码在Linux环境下输入,然后命名为greet.c保存.
(2):
执行gcc–ogreetgreet.c–g命令;
(3):
执行./greet命令,结果如下:
(4)发现输出为空,而代码在语法上没有错误,判断为逻辑上出现错误,用GDB进行调试,具体过程如下图所示:
(5)经过GBD的调试,发现string2[size-i](i==0)时为空,所以知道string2[size-i]=string1[i]有逻辑错误。
当i=0时,既string1的第一个字符应该对应string2最后一个字符,而string2最后一个字符的表达式是string[size-1],其他依次类推。
应将string2[size-i]=string1[i];改成string2[size-i-1]=string1[i];
(6)修改代码重新编译连接后输出结果正确,如下图所示:
试验二:
•将上述的程序中的函数定义部分另存为文件hello.h,将主函数实现部分另存为hello.c,在两个程序所在目录下编写makefile文件,然后调用make工具生成可执行目标print。
(1):
用vi编辑hello.h,hello.c文件,结果如下:
(2)编写makefile文件:
(3):
执行makefile命令,输出正确的结果如下:
(接上)
实验内容(算法、程序、步骤和方法)
具体过程如上
数据记录
和计算
具体数据,截图记录如上
结论
(结果)
用GDB进行调试能发现很容易的发现程序的一些逻辑错误,进行修改后能正确的执行,而使用makefile文件很将多个文件同时进行编译,更加的方便,具体的使用方法和过程见报告上面的实验内容。
小结
通过本实验,我掌握了:
(1):
进一步熟悉了linux操作系统的一些操作;
(2):
能在linux环境下进行一些基本的程序编写,并学会利用GCC工具对写好的程序进行编译;
(3):
知道了GDB的作用;
(4):
能利用GDB进行一些简单程序的调试,并会使用GDB中的list,break,frame,等命令;
(5):
掌握了简单的makefile文件的编写,并利用它对程序进行编译执行;
目前我存在的问题有:
(1):
对GCC的工作原理不是很了解;
(2):
对makefile文件的一些语法掌握的不是很熟,需要继续学习;
指导老师评议
成绩评定:
指导教师签名:
实验报告说明
专业实验中心
实验名称要用最简练的语言反映实验的内容。
如验证某程序、定律、算法,可写成“验证×××”;分析×××。
实验目的目的要明确,要抓住重点,可以从理论和实践两个方面考虑。
在理论上,验证定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法。
一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。
实验环境实验用的软硬件环境(配置)。
实验内容(算法、程序、步骤和方法)这是实验报告极其重要的内容。
这部分要写明依据何种原理、定律算法、或操作方法进行实验,要写明经过哪几个步骤。
还应该画出流程图(实验装置的结构示意图),再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。
数据记录和计算指从实验中测出的数据以及计算结果。
结论(结果)即根据实验过程中所见到的现象和测得的数据,作出结论。
小结 对本次实验的体会、思考和建议。
备注或说明可写上实验成功或失败的原因,实验后的心得体会、建议等。
注意:
∙实验报告将记入实验成绩;
∙每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。