课堂测试

第一题

  1. 每个*.c一个文件,每个 *.h一个文件,文件名中最好有自己的学号
  2. 用Vi输入图中代码,并用gcc编译通过
  3. 在Vi中使用K查找printf的帮助文档
  4. 提交vi编辑过程截图,要全屏,包含自己的学号信息

因为我发现我第一题提交的是错误的图片,是我还没有编译通过的图片,所以我重新补交一下。

遇到的问题:

之所以刚开始老师给的程序始终没办法编译通过的原因是因为我的文件夹里有很多个main.c文件,编译时对我所有的main.c都进行了编译,所以一直都显示报错。当我把老师给的图片上的程序都重新放进单独的文件夹后,这个问题就被解决了。

第四题

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
  2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

制作静态库代码步骤如下所示:

gcc -c add.c -o add.o
gcc -c div.c -o div.o
gcc -c mul.c -o mul.o
gcc -c sub.c -o sub.o
ar rcs mymath.a add.o sub.o mul.o div.o
gcc -static -o link1 main.o mymath.a
./link1

运行图如下:

第五题

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
  2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

制作共享库代码步骤如下所示:

1.

gcc -shared -fpic -o mymath.so add.c sub.c mul.c div.c
gcc -o link2 20155315main.c ./mymath.so
./link2

运行图如下:

遇到的问题:

之所以没有在课上及时完成很重要的一个原因就是因为最开始老师给的编译上出了问题,调整了很久才弄好。所以感觉自己还是应该再去复习一下C语言的内容,同时学会复习上节课学到的东西,可能再面对这种测试会表现更好。


Makefile

1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

2 提交Make过程截图,要全屏,包含自己的学号信息

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

测试代码:

testmymath:main.o add.o sub.o mul.o div.o
gcc main.o add.o sub.o mul.o div.o testmymath
main.o:main.c head.h
gcc -c main.c -o main.o
add.o:add.c head.h
gcc -c add.c -o add.o
sub.o:sub.c head.h
gcc -c sub.c -o sub.o
mul.o:mul.c head.h
gcc -c mul.c -o mul.o
div.o:div.c head.h
gcc -c div.c -o div.o
clean:
rm -f *.o testmymath

我的makefile不断地出现问题:



刚开始是因为我忘了最重要也最基础的,每个gcc前面都要有tab键,后面却又出现了新的问题:

Myod

1 复习c文件处理内容

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

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

  2. 编写Makefile

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

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

od命令:

od命令

用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。

语法:od [选项] 文件…

命令中各选项的含义:

  • A 指定地址基数,包括:

    d 十进制

    o 八进制(系统默认值)

    x 十六进制

    n 不打印位移值
  • t 指定数据的显示格式,主要的参数有:

    c ASCII字符或反斜杠序列

    d 有符号十进制数

    f 浮点数

    o 八进制(系统默认值为02)

    u 无符号十进制数

    x 十六进制数

    除了选项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。

我的虚拟机临时出错了,暂时无法解决,所以我的MYOD无法截图上交

虚拟机错误如图所示:

后来我在网上搜了一下,找到了一个解决方法,说出现这种状况的原因是因为:

zsh是一个相当好用的shell,相信使用linux系统的朋友都不陌生,当然还有my zsh,不过有的时候会出现一些问题,例如因为有的时候系统因为默写原因强行启动的时候会破坏zsh的历史文件,导致下次使用的时候提示:zsh: corrupt history file /home/xxx/.zsh_history错误。

解决方案就是:

cp .zsh_history zsh_history
rm -f .zsh_history
strings zsh_history .zsh_history

代码的实现如下图所示:

#include<stdio.h>
void main(){ char filename[50];
printf("please input file's name;\n");
scanf("%s",filename);
ascii(filename);
change(filename); }
void ascii(char *filename)
{FILE *fp;
char ch;
fp=fopen(filename,"r");
ch=fgetc(fp);
printf("ascii码输出为:\n");
while(ch!=EOF)
{if(ch=='\n') printf("\n");
else printf("%4d",ch);
ch=fgetc(fp);
}
}
void change(char *filename)
{
FILE *fp;
char ch;
printf("16进制输出为:\n");
fp=fopen(filename,"r");
ch=fgetc(fp);
while(ch!=EOF)
{
if(ch=='\n') printf("\n");
else printf("%4x",ch);
ch=fgetc(fp);
}
fclose(fp);
}

20155215 第二周测试1 与 myod的更多相关文章

  1. # 第二周课堂实践以及MyOD

    第二周课堂实践以及MyOD 之前使用的虚拟机出现问题被我删掉了,开始学着使用Mac系统自带的终端.在课堂上出现了问题,询问王雄老师也没有解决,课下先使用了实验楼环境进行实验,后来又在Mac重新进行了尝 ...

  2. 20155233刘高乐 第二周课堂实践以及MyOD

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so? 2. 提交共 ...

  3. 2019-2020-1 20199329 第二周测试(环境:ubuntu64位)

    2019-2020-1 20199329 第二周测试(环境:ubuntu64位) 实验一 0.每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 1.用Vi输入图中代码,并用gcc编译通过 ...

  4. 第二周选做(myod)

    02.第二周myod(选做) 实验要求: 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写Mak ...

  5. 20155207第二周myod以及课堂测试

    第二周myod以及课堂测试 第二周测试5 题目 1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main ...

  6. 20155320信息安全系统设计第二周课堂考试总结及myod的实现

    20155320 信息安全系统设计第二周课堂考试总结及myod的实现 第二周测试一二已在课上提交 第二周测试3-gdb测试 用gcc -g编译vi输入的代码 在main函数中设置一个行断点 在main ...

  7. 20155229 2016-2017-2 《Java程序设计》第二周学习总结

    20155229 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 布尔:boolean类型可表示true和false %符号被用来作为控制符号前置,所以规定用 ...

  8. 20155306 2017-2018-1《信息安全系统设计》第二周课堂测试以及myod的实现

    20155306 2017-2018-1<信息安全系统设计>第二周课堂测试以及myod的实现 第二周课堂测验: (注:前两项在课堂已提交,在此不做详解) 第一项: 每个.c一个文件,每个. ...

  9. 20155322 2017-2018-1《信息安全系统设计》第二周 课堂测试 Linux下C语言实现MYOD

    20155322 2017-2018-1<信息安全系统设计>第二周 课堂测试 Linux下C语言实现MYOD [博客目录] 静态库测试 实现方法 相关资料 操作 动态库测试 实现方法 相关 ...

随机推荐

  1. 畅通工程 HDU - 1232

    某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接 ...

  2. 如何解决 touchstart 事件与 click 事件的冲突

    一 · 业务场景的描述 在对已完成的PC站点进行移动端适配时,我们想要站点在移动设备上有更快的响应速度,以带给用户更好的体验,此时,我们应该使用移动设备专用的事件系统,例如,使用 touchstart ...

  3. 【HDU2255】奔小康赚大钱

    题面 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓 ...

  4. SPOJ:To the moon

    题面 vjudge Sol 主席树模板 # include <bits/stdc++.h> # define RG register # define IL inline # define ...

  5. sql server 2008 sql prompt 自动提示

    sql server 2008 在编写SQL脚本的时候,总是希望能提示一些信息,或者自动提示需要查询的表的名字,或者表的基本信息,sql server默认会有一些提示的,如果没有可以设置工具--> ...

  6. IT连创业系列:新的一年,先淫文一篇!

    办公室窗外,有鸟声〜〜 在IT连创业走过的日子里,这是我第一次听见鸟声. 也许,是曾经的忙碌,封锁了自己的心眼. 岁月秒秒: 当初燃烧的火焰,从红,烧成了蓝. 曾经的内心湃澎,化成了平淡坚持. 但这, ...

  7. WPF自学入门(七)WPF 初识Binding

    今天记录一下Binding的基础和具体的使用方法,说起这个Binding,在WPF中,Binding是很重要的特征,在传统的Windows软件来看,大多数都是UI驱动程序的模式,也可以说事件驱动程序, ...

  8. Linux shell 脚本(二)

    转载请标明出处:  http://blog.csdn.net/zwto1/article/details/45078837:  本文出自:[明月的博客] 五.字符串处理 1.子串截取操作: 路径分割: ...

  9. PAT乙级-1043. 输出PATest(20)

    给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按"PATestPATest...."这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一 ...

  10. win10每次开机都显示“你的硬件设置已更改,请重启电脑……”的解决办法

    之前的系统没有这个问题,就是win10有这个问题,过一段时间就会出现这个问题,网上找了很多,最后发现是显卡驱动的问题,是A卡的问题,只需要更新A卡驱动即可,如果更新A卡驱动不行的话,或者说A卡驱动已经 ...