csapp-week1-task-optional-Myod

20181324 谭杰 Myod完成

1.任务内容

  1 复习c文件处理内容

  2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能

  3. main与其他分开,制作静态库和动态库

  4. 编写Makefile

  5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息

  6 在博客园发表一篇博客,重点写遇到的问题和解决过程

2.过程

  1.了解od命令,开始不懂左边一列是什么意思,然后在网上查了后,左边一列是地址,这地址是什么呢?想了半天发现,这就是字符数,只不过用8进制表示,地址就是这一行之前显示了的字符数,最后加一个文件的总字符数。也发现了一些以往学长学姐的博客,我觉得有一个博客说的对,实现应该是od -tx1 -tc xxx命令,因为这一条是字符和16进制ASCII码对应的比较好对照

  2.复习C语言文件操作,先考虑的是fread(),感觉不行,无法获得准确的所有字符个数,然后使用fgetc(),代码该队之后,发现两者都可以。fread()可以按照一个char一个块读,而fgetc需要使用循环
  
  3.调试,不懂如何对加了main函数参数的程序用调式器调试,然后就一点一点根据输出调试,找到错误原因,使用的两层循环,第一层是行数,第二层是输出一行16进制和一行字符,我把s[i*16+j]写为了s[i+16*j],所以一直不对,直到想到根据输出信息进行调试才把程序改对

3.过程的一点截图

直接、动态库、静态库生成可执行文件运行截图

makefile截图

od命令执行截图

4.代码

[码云链接][https://gitee.com/TJ1324/csapp3-e/tree/master/projects/myod]

5.思考

  这个任务因为给定了od的具体参数所以本身并不难,关键就在对于语言是否熟练,熟练就做的快,不熟练就慢
posted @ 2020-10-12 00:21  20181324  阅读(83)  评论(0编辑  收藏  举报