文档章节

“软件工程(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
2018 年,不要事后才想到代码安全问题

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

周其
2017/12/23
1K
2
框架比较:Scrum vs Kanban vs Lean vs XP

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

it168网站
2017/11/22
0
0
如何让编程产能翻二番?

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

dellfox
2014/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【Flutter教程】从零构建电商应用(一)

在这个系列中,我们将学习如何使用google的移动开发框架flutter创建一个电商应用。本文是flutter框架系列教程的第一部分,将学习如何安装Flutter开发环境并创建第一个Flutter应用,并学习Flu...

笔阁
14分钟前
1
0
什么是以太坊DAO?(三)

Decentralized Autonomous Organization,简称DAO,以太坊中重要的概念。一般翻译为去中心化的自治组织。 投票支付合约的所有费用和行动需要时间,并要求用户始终保持活跃,知情和专注。另一...

geek12345
16分钟前
0
0
一个本科学生对Linux的认知

一个本科学生对Linux的认知 我是一名大三的普通一本大学的软件工程的一名学生,学校开设了一些关于系统开发的课程,纸上得来终觉浅,学校的课程课时较短,想要在56个课时之内学会一些公司需要...

linuxCool
58分钟前
2
0
CentOS 安装Tomcat

Tomcat 介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 Java 程序写的网站用tomcat+jdk来运...

野雪球
今天
1
0
OSChina 周四乱弹 —— 每天都迟到是种什么样的体验

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @开源中国首席机器人 :《Too Good At Goodbyes (Acoustic) - Sam Smith - 单曲》 《Too Good At Goodbyes (Acoustic) - Sam Smith - 单曲》 ...

小小编辑
今天
709
12

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部