文档章节

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

逍遥蓝云
 逍遥蓝云
发布于 2016/03/04 14:38
字数 420
阅读 21
收藏 0
点赞 1
评论 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

2018 年,不要事后才想到代码安全问题

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

周其 ⋅ 2017/12/23 ⋅ 2

框架比较:Scrum vs Kanban vs Lean vs XP

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

it168网站 ⋅ 2017/11/22 ⋅ 0

如何让编程产能翻二番?

软件开发过程有一个很自然的比喻:建楼房,要画图纸、搭架构、砌砖头。这个比喻大体说得过去,问题是,这个“砖头”绝非普通的砖头,具有以下特性: 一、每一块都由手工制作; 二、每一块的材...

dellfox ⋅ 2014/05/08 ⋅ 0

下面简要介绍软件工程的七条原理

软件工程介绍 自从1968年提出“软件工程”这一术语以来,研究软件工程的专家学者们陆续提出了100多条关于软件工程的准则或信条。美国著名的软件工程专家巴利·玻姆(Barry Boehm)综合这些专...

Amamatthew ⋅ 2014/09/11 ⋅ 0

甲骨文CSO批企业用户用逆向工程寻漏洞

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

cnbeta ⋅ 2015/08/12 ⋅ 0

西工大-云创大数据联合实验室签约暨揭牌仪式隆重举行

  2017年12月19日,西工大-云创大数据联合实验室签约仪式暨揭牌仪式在西北工业大学长安校区计算机学院隆重举行。西北工业大学工业和信息化部大数据存储与管理重点实验室主任李战怀教授、教...

大数据头条 ⋅ 2017/12/21 ⋅ 0

如何有效率地学习并精通一项技术

VS2010正式版出来了伴随许多新的技术或更新的技术,是时候了解学习一下。(其他技术平台类似) 一、学习 1.查阅该项技术的文档,把该项技术相关的所有主题都看一遍,这样能够对该项技术有整体...

彭博 ⋅ 2012/03/09 ⋅ 0

2015 年 SES 全球软件专家高峰会议在北京举行

(国际电子电器工程师协会)软件每年举办一次全球软件专家高峰会议 (IEEE Software Experts Summit, SES),邀请软件各个领域的杰出思想家和实践者,分享讨论软件工程领域近年来最重要的成果、...

oschina ⋅ 2015/09/09 ⋅ 1

图书在线购买地址

图书在线购买地址 《虚拟化技术实践指南 面向中小企业的高效、低成本解决方案》 《深入学习VMware vSphere 6》购买链接 《VMware虚拟化与云计算应用案例详解第2版》购买链接 《Windows组网与...

王春海 ⋅ 2010/11/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Boot整合模板引擎thymeleaf

项目结构 引入依赖pom.xml <!-- 引入 thymeleaf 模板依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId......

yysue ⋅ 21分钟前 ⋅ 0

ConstraintLayout使用解析

AndroidStudio3.0创建Project默认的布局就是ConstraintLayout。 AndroidStudio3.0前的可以自己修改,使用ConstraintLayout。 为了要使用ConstraintLayout,我们需要在app/build.gradle文件中...

_OUTMAN_ ⋅ 33分钟前 ⋅ 0

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 今天 ⋅ 9

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 今天 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部