命令行解释程序报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京联合大学《操作系统课程设计》实验一:命令行解释程序

学院:信息学院

专业:计算机科学与技术

班级:计算机1203B

姓名:谢申兵

学号:2012080332071

2015年7月18日

一.采用的数据结构说明

字符数组:

本程序中包含的字符数组有:

filename1[20]:在Ccopy()函数中,存储源文件路径和名字的字符数组。

filename2[20]:在Ccopy()函数中,存储目标文件路径和名字的字符数组。

oldname[20]:在Cmv()函数中用来保存源文件路径和名字的字符数组。

newname[20]:在Cmv()函数中用来保存目标文件路径和名字的字符数组。

Cho2[6]:存取用户输入的指令,并用来作为Switch分支的判定条件之一。

File[20]:Cerase()函数中用来存放要删除的文件的路径和名字的字符数组。

Word[100]:在Cdis()中存放用户要回显的字符串。

二.源程序清单、注释和流程图

(1)流程图

程序开始

输入指令

Num=1

Num=2

Num=3

Num=4

Cdir?

Ccopy?

Cerase?

Cdis?

Num=5

Cclr?

Cmv?

Num=6

Num=7

Cuname?

Cend?Num=8

Case?

传入两个参数来复制文件

删除一个带绝对路径的指定

文件

回显输入的字

符串

清屏

移动或者重命

名文件显示计算机详

细信息

退出程序

调用Cmd 里的dir 查看目录

输入两个路径

输入一个绝对路径和文件名

不带空格的字符串

程序结束

4

1

23

8

7

输入带路径的两个文件名,路径相同为重命名

(2)源程序和注释

#include

#include //exit,system,strcmp

int flag=1;

char ch[8];//存储文件读取内容的中间变量

FILE *fp;

FILE *fp1;

char filename1[20];/*复制文件存放的原文件名*/

char filename2[20];/*复制文件存放的目标文件名*/

char oldname[20];/*用来存放移动文件的源文件名*/

char newname[20];/*用来存放移动文件的目标文件名*/

void start_copy(char *filename1,char *filename2)

/*文件复制函数,可以实现文本和图片的复制*/

{

if((fp=fopen(filename1,"rb"))==NULL||(fp1=fopen(filename2,"wb"))==NULL) /*源文件或目标文件打开失败则无法进行复制*/

{

printf("can't open the source file!\n");

exit(0);

}

else

{

fread(ch,1,8,fp);//一次读取八个字节的字节流,存放到ch字符数组里

while (!feof(fp))//没读取到文件尾部时,持续读取

//当fp指向文件的尾部时,返回值为0,执行fclose

//当fp未指向文件尾部时,返回值为1,连续读写{

fwrite(ch,1,8,fp1);//写到目标文件里

fread(ch,1,8,fp);//继续读取

}

fclose(fp);//关闭指针,释放内存

fclose(fp1);

}

}

void Cend()

{

flag=0;//将循环条件flag=1变为0来结束循环,结束程序

}

void Cdir()//显示目录

{

system("cls");

char str[30];

char str1[20];

printf("请输入一个路径:");

gets(str1);

strcpy(str,"dir ");

strcat(str,str1);

system(str);}

void Ccopy()//文件复制主函数

{

scanf("%s%s",&filename1,&filename2);//获取源文件和目标文件名

start_copy(filename1,filename2);//传参到复制函数

}

void Cerase()//删除文件函数

{

char File[20];//文件名存储

scanf("%s",&File);//获得文件名

if(remove(File)==0)//删除成功remove返回0

{

printf("Remove %s Successfully!\n",File);

}

else

{

perror("Failed!");

}

}

void Cdis()

{

char Word[100];//存放用户输入的字符串

getchar();//吸取第一个不必要的空格字符

gets(Word);//获得用户的字符串内容

printf("**********E***C***H***O**********\n");

puts(Word);//显示用户的字符串内容

}

void Cmv()//移动或重命名文件函数

{

scanf("%s%s",&oldname,&newname);//用来获取用户输入的两个文件名rename(oldname,newname);

}

int main()

{

相关文档
最新文档