zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155239学号 《信息安全系统设计基础》课堂测试补做+第四周学习总结

    2017-2018-1 学号 《信息安全系统设计基础》课堂测试补做+第四周学习总结

    课堂实践

    用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc

    XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名

    不要把代码都写入main函数中

    要分模块,不要把代码都写入一个.c中提交测试代码和运行结果截图,提交调试过程截图,要全屏,包含自己的学号信息

    课上上传代码到码云

     include<stdio.h>
     include<unistd.h>
     void myod(int fd,int n1,int n2,int n3,int n4)
     {
      char ch,line[16];
      int i;
      int a=0;
      int j=0;
      while(read(fd,&ch,1)!=0){
        line[j%16]=ch;
    if((j+1)%16==0){
        printf("%07o  ",16*a);
      a++;
        if(n1){for(i=0;i<16;i++)
        {
            if(line[i]=='
    ')
            {printf("%5s","\n");continue;}
        if(line[i]=='	')
            {printf("%5s","\t");continue;}
            putchar(line[i]);
            putchar(' ');
            putchar(' ');
            putchar(' ');
            putchar(' ');
        }
        putchar('
    ');}
        if(n2){printf("         ");for(i=0;i<16;i++)
        {
            
            if(line[i]=='
    ')
            {printf("0%-4x",'
    ');continue;}
        if(line[i]=='	')
            {printf("0%-4x",'	');continue;}
            printf("%-5x",line[i]);
        }
        putchar('
    ');
        }
    
        if(n3){printf("        ");for(i=0;i<16;i++)
        {
    
            if(line[i]=='
    ')
            {printf("%-5d",'
    ');continue;}
        if(line[i]=='	')
            {printf("%-5d",'	');continue;}
            printf("%-5d",line[i]);
        }
        putchar('
    ');
        }
        if(n4){printf("       ");for(i=0;i<16;i++)
        {
            if(line[i]=='
    ')
            {printf("%-5o",'
    ');continue;}
        if(line[i]=='	')
            {printf("%-5o",'	');continue;}
            printf("%-5o",line[i]);
        }
        putchar('
    ');
        }
    }
    j++;
    
    }
    }
    

    od的功能(参考Linux od命令详细介绍及用法实例):

    od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。
    选项-t:指定输出格式,格式包括a、c、d、f、o、u和x。

    od -tx XXX是以十六进制输出XXX的内容,默认以四字节为一组显示。(XXX中字符对应的ascii值的十六进制表示,且每四字节显示的顺序是字符从后向前的顺序)截图如下:

    代码链接

    man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用

    grep -nr XXX /usr/include :查找宏定义,类型定义

    教材学习内容总结

    od命令

    od命令用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。

    常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如,程序可能输出大量的数据记录,每个数据是一个单精度浮点数。这些数据记录存放在一个文件中,如果想查看下这个数据,这时候od命令就派上用场了。在我看来,od命令主要用来格式化输出文件数据,即对文件中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。

    -a:此参数的效果和同时指定“-ta”参数相同;

    -A:<字码基数>:选择以何种基数计算字码;

    -b:此参数的效果和同时指定“-toC”参数相同;

    -c:此参数的效果和同时指定“-tC”参数相同;

    -d:此参数的效果和同时指定“-tu2”参数相同;

    -f:此参数的效果和同时指定“-tfF”参数相同;

    -h:此参数的效果和同时指定“-tx2”参数相同;

    -i:此参数的效果和同时指定“-td2”参数相同;

    -j<字符数目>或--skip-bytes=<字符数目>:略过设置的字符数目;

    -l:此参数的效果和同时指定“-td4”参数相同;

    -N<字符数目>或--read-bytes=<字符数目>:到设置的字符树目为止;

    -o:此参数的效果和同时指定“-to2”参数相同;

    -s<字符串字符数>或--strings=<字符串字符数>:只显示符合指定的字符数目的字符串;

    -t<输出格式>或--format=<输出格式>:设置输出格式;

    -v或--output-duplicates:输出时不省略重复的数据;

    -w<每列字符数>或--width=<每列字符数>:设置每列的最大字符数;

    -x:此参数的效果和同时指定“-h”参数相同;

    --help:在线帮助;

    --version:显示版本信息。

    来自: http://man.linuxde.net/od

    完成head,tail的使用,相关API的分析,伪代码,产品代码,测试代码的编写(3分)

    head命令就是对文件打印代码,默认是从头开始打印前10行 ,也可以自定义打印

    head -n 文件名

    tail命令就是对文件打印代码,默认是从头开始打印后10行 ,也可以自定义打印ail -n 文件名表示打印这个文件n行
    伪代码:

    myhead:
    myHead  要打开的文件 
      {
      读入字符
       if(不是换行符)
       输出字符;
       else
       行数加1;
       
       if(读入10行)
       跳出循环;关闭文件
       }
    

    mytail

    mytail  要打开的文件 
    {
    读入所有字符,行数
    if(不是换行符)
    从最后一行输出字符;
    else
    行数减11;
    
     if(读入10行)
     跳出循环;关闭文件
    

    }
    产品代码:

    myhead:
    #include"tou.h"  
    
     void main (int argc,char *argv[]) 
    { 
    char ch[4000];
    int a,j,i,x=0;
    int in=open(argv[1],O_RDONLY,0);
    
    while((a=read(in,ch,4000))!=0)
    {
     
     for(i=0;i<a;i++)
    {
     if(ch[i]!='
    ')
     printf("%c",ch[i]);
      else
       { printf("
    ");     x++;}
    if(x==11)
    break;
    }
    
    }
    
    close(in);
    
    }
    

    mytail:

    #include"tou.h"  
    
    void main (int argc,char *argv[]) 
    { 
     char ch[4000];
      int a,i,j=0,x=0,line=0;
     int in=open(argv[1],O_RDONLY,0);
      while((a=read(in,ch,4000))!=0)
     {
      for(i=0;i<a;i++)
     {
      if(ch[i]=='
    ')
      line++;
      else(j++);
      }
      }
      while((a=read(in,ch,4000))!=0)
     {
      for(i=j;i>0,x<11;i--)
     {
     if(ch[i]!='
    ')
     printf("%c",ch[i]);
      else
       { printf("
    ");   x++ ;}
      if(x==11)
     break;
     }
     close(in);
     }
    

    教材学习中的问题和解决过程

    (一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )

    • 问题1:XXXXXX
    • 问题1解决方案:XXXXXX
    • 问题2:XXXXXX
    • 问题2解决方案:XXXXXX
    • ...

    代码调试中的问题和解决过程

    • 问题1:XXXXXX
    • 问题1解决方案:XXXXXX
    • 问题2:XXXXXX
    • 问题2解决方案:XXXXXX
    • ...

    代码托管

    (statistics.sh脚本的运行结果截图)

    上周考试错题总结

    • 错题1及原因,理解情况
    • 错题2及原因,理解情况
    • ...

    结对及互评

    点评模板:

    • 博客中值得学习的或问题:
      • xxx
      • xxx
      • ...
    • 代码中值得学习的或问题:
      • xxx
      • xxx
      • ...
    • 其他

    本周结对学习情况

    - [结对同学学号1](博客链接)
    - 结对照片
    - 结对学习内容
        - XXXX
        - XXXX
        - ...
    

    其他(感悟、思考等,可选)

    xxx
    xxx

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20
    第二周 300/500 2/4 18/38
    第三周 500/1000 3/7 22/60
    第四周 300/1300 2/9 30/90

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    函数的内置方法
    函数
    文件操作
    三元运算
    流程控制
    集合
    div容器内文本对齐--神奇的css
    Struts2的零配置和rest插件
    MIME类型
    ganymed-ssh2使用
  • 原文地址:https://www.cnblogs.com/lyx1996/p/7674958.html
Copyright © 2011-2022 走看看