文档章节

“软件工程(C编码实践篇)”实验报告(二)

逍遥蓝云
 逍遥蓝云
发布于 2016/03/04 14:38
字数 420
阅读 22
收藏 0

实验思路:

根据上课所学,照着思路,运用模块化编程思想,将指令分成各个部分完成,以后可以快捷的添加指令和修改完善指令。

实验代码 :

引用头文件

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

define

#define MAXSIZE 128#define CMD_NUM 10

声明函数

void check_cmd(char [],char *[]);void cmd_help();void cmd_others();
void cmd_open();
void cmd_close();
void cmd_put();
void cmd_ls();
void cmd_cd();
void cmd_get();
void cmd_disconnect();
void cmd_bye();
void cmd_error();

main 函数

int main(){   //定义一个接受cmd的char数组
   char cmd[MAXSIZE];  //存放命令的char指针数组
   char *cmd_arr[CMD_NUM]={"help","others","open","close","put","ls","cd","get","disconnect","bye"};   printf("Ctrl z to end\n");   
    while(printf("command:"),scanf("%s",cmd)) 
    {
         check_cmd(cmd,cmd_arr);
    }
}

check_cmd函数可以判断输入命令是否为正确命令,如果是正确命令调用该命令函数

void check_cmd(char cmd[],char *cmd_arr[]){   int i=0;//遍历cmd_arr数组,查看输入命令是否在其中,如在i为该命令的下标,如不在,i为CMD_NUM
  while(i<CMD_NUM&&strcmp(cmd,cmd_arr[i])!=0)
  {
    ++i;
  } 
//根据i的值调用函数
    switch(i)
    {  
       case 0:
           cmd_help(); 
           break;      
       case 1:
           cmd_others();
           break; 
       case 2:
           cmd_open();  
           break;
       case 3:
           cmd_close(); 
           break; 
       case 4:
           cmd_put(); 
           break;  
       case 5:  
           cmd_ls();
           break;
       case 6:
           cmd_cd(); 
           break;
       case 7:
           cmd_get(); 
           break; 
       case 8:
           cmd_disconnect(); 
           break; 
       case 9:
           cmd_bye(); 
           break; 
       default:
           cmd_error();      
    }

}

各种命令的函数

void cmd_help(){
    printf("this command is help\n");
} 
void cmd_others(){
    printf("this command is others\n");

} 
void cmd_open(){  
    printf("this command is open\n");
} 
void cmd_close(){ 
    printf("this command is close\n");
} 
void cmd_put(){  
    printf("this command is put\n");
} 
void cmd_ls(){ 
    printf("this command is ls\n");
} 
void cmd_cd(){ 
    printf("this command is cd\n");
} 
void cmd_get(){ 
    printf("this command is get\n");
}
 void cmd_disconnect(){
    printf("this command is disconnect\n");
} 
void cmd_bye(){ 
    printf("this command is bye\n");
} 
void cmd_error(){ 
    printf("this command  is error\n");
}

  

实验代码

© 著作权归作者所有

共有 人打赏支持
逍遥蓝云
粉丝 2
博文 23
码字总数 17574
作品 0
合肥
高级程序员
软件工程(C编码实践篇)学习总结

真实姓名(姬祥) + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006 整体概括: 这学期学习了中国科学技术大学孟宁老师的...

神迹难觅
2017/11/11
0
0
甲骨文CSO批企业用户用逆向工程寻漏洞

  【IT168 资讯】周一,甲骨文(Oracle)公司的首席安全官Mary Ann Davidson在其博客上发表了一篇颇具争议的博文,题为《不,这样不行(No,You Really Can't)》 。大致为批评使用甲骨文软件的...

cnbeta
2015/08/12
0
0
框架比较:Scrum vs Kanban vs Lean vs XP

  【IT168 资讯】在这篇文章中, Alesia Krush将对四种最流行的敏捷开发方法进行比较,给出了每种方法的优缺点。   市场上有各种各样的面向实践的敏捷框架,其中最受欢迎的是Scrum、Kan...

it168网站
2017/11/22
0
0
编程更像写作

本文是从 Programmers Are Writers 这篇文章翻译而来。 早在2009年,Bruce Eckel 写了一篇文章,道出了我的想法。 “我终于给软件开发找到了一个好的类比,” Bruce 写到。“可是,我的读者们...

红薯
2012/01/12
2K
18
2018 年,不要事后才想到代码安全问题

年复一年,企业都会在安全方面面临挑战,2017年也不例外。与其向业界宣传安全的重要性,还不如试着找一种新方式让安全重回中心。 “问题是,根据CA Veracode和DevOps.com的2017年DevSecOps全...

周其
2017/12/23
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部