2017-2018-1 20155325 《信息安全系统设计基础》0927课堂实践

课堂实践

静态库的测试

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

  • 知识点
    gcc -c 要封装的函数.c
    ar rcs 名1.a 要封装的函数.c
    gcc -c main.c
    gcc -static -o 名2 main.o ./名1.a

共享库

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

  • 知识点
    gcc -shared -fpic -o 名.so 要封装函数.c
    gcc -o 名 main.c ./名.so

Makefile

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

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

  • 截图

  • 知识点

testmymath: main.c add20155325.c sub20155325.c mul20155325.c div20155325.c
gcc -Og -o testmymymath main.c add20155325.c sub20155325.c mul20155325.c div20155325.c

myod

原版

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void One(int LJ,int tx[],char tx2[]);
char Change(int t);
void TX(int H,int tx[]);
void main(int argc,char *argv[])
{
    FILE *fp;
    if((fp = fopen(argv[4],"r")) == NULL)
    {
        printf("   *** 文件打开失败***");
	exit(0);
    }
    if(strcmp(argv[1],"od")==0)
    {
    	if(strcmp(argv[2],"-tc")==0)
	{
            if(strcmp(argv[3],"-tx1")==0)
	    {
	    	char str[1000];
		int num,i,j,i2;
		int LJ,SY;
		int tx[8];
		char tx2[8];
		int tSY,Dan;
		for(num=0;num<strlen(str);num++)str[num]='0';
		num = 0;
		while((str[num]=getc(fp))!=EOF){num++;}
		for(LJ=0,SY=num;;)
		{
		   for(j=0;j<8;j++)tx[j] = 0;
		   One(LJ,tx,tx2);
		   for(j=0;j<8;j++)printf("%c",tx2[j]);
		   printf("  ");
		   tSY = SY;
		   if(tSY>=16)Dan = 16;
		   else Dan = tSY;
		   for(j=LJ;j<Dan+LJ;j++)
		   {
		      if(str[j]=='\n')printf("\\n      ");
		      else printf("%c \t",str[j]);
		   }
		   printf("\n");
		   int tt;
		   printf("         ");
		   for(j=LJ;j<Dan+LJ;j++)
		   {
		   tt = str[j];
		   One(tt,tx,tx2);
		   for(i2=0;i2<8;i2++)
		   {
		         if(tx2[i2]!='0') printf("%c",tx2[i2]);
		   }
		   printf("  \t");
		   }
		   printf("\n");
		   tSY =tSY-Dan;
		   if(SY>=16)LJ = LJ+16;
		   else if((SY>0)&&(SY<16))LJ = LJ+SY;
		   else if(SY==0)break;
		   SY = num-LJ;
		}
	    }
        }
    }
    else printf("指令输入错误\n");
    fclose(fp);
}
void One(int LJ,int tx[],char tx2[])
char Change(int t);
{
    TX(LJ,tx);
    int i;
    for(i=0;i<8;i++)tx2[i] = Change(tx[i]);
}

char Change(int t)
{
    if((t>=0)&&(t<10))return t+48;
    else return t+87;
}

void TX(int H,int tx[])
{
    if(H>536870911)
    {
        printf("字符数太大,超出限制\n");
	exit(0);
    }
    int i = 7;
    for(;i>0;)
    {
       tx[i] = H%16;
       H = H/16;
       i--;
    }
}

问题

  1. 尝试过:git config -–global user.name "xxx"
  2. git config –-global user.email "xxx@xxx.com"
    无效
    然后我重新登录一下我的码云,发现原来的密码居然登不上去了,修改了密码之后,再推就能推上去了。

感想

重新配置过虚拟机等,走完所有流程,我会在之后的博客中将详情记录下来。
本觉得Myod简单,结果处理了很久的bug,保持微笑。

posted @ 2017-10-01 21:05  难能可贵成功犯傻  阅读(226)  评论(4编辑  收藏  举报