資源簡介
操作系統.zip

代碼片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include?
using?namespace?std;
const?int?M=256;
const?int?N=10;
char?cmd[M];???????????//輸入的命令
char?word[N][M];?????????//解析好的命令
int??Read_cmd();????????????//讀取命令
int?Memory_cmd();??????????//解析命令
int?do_cmd(); //執行命令
int?do_pwd(); //顯示當前路徑
int?do_list(); //列出目錄及文件
int?do_cd(); //改變當前文件夾路徑
int?do_mkdir(); //新建目錄
int?do_rmdir(); //刪除目錄
int?do_copy(); //復制文件
int??do_rename();//重命名文件
int?exit(); //退出系統
int??Read_cmd(){???//讀取命令
char?ch[M];???
int?i?=?0;
cin.getline(ch?M);
strcpy(cmd?ch);???//復制字符串
return?0;
}
int?Memory_cmd(){????//解析命令
int?i?j?=?0?k?=?0;
int?flag?=?1;???//前面有無分割符,1表示有分割符,?0表示無分割符
int?len?=?strlen(cmd);???//獲取cmd的長度
for(i=0;?i if(cmd[i]?==?‘?‘?||?cmd[i]?==?‘\t‘){??//有分割符
if(flag?==?0){
word[k][j]?=?0;???//字符串結束
k++;
j?=?0;
flag?=?1;
}
}else{
word[k][j]?=?cmd[i];??//將字符存儲
j++;
flag?=?0;
}
}
if(flag?==?1){
word[k][0]?=?0;???//標志read_cmd結束
}else{
word[k][j]?=?0;
k++;
word[k][0]?=?0;
}
return?1;
}
int?do_cmd(){????//執行命令
if(strcmp(“pwd“word[0])?==?0){ //顯示當前所在目錄的路徑
do_pwd();
return?0;
}else?if(strcmp(“list“word[0])?==?0){ //顯示當前目錄的所有文件
do_list();
return?0;
}else?if(strcmp(“cd“word[0])?==?0){ //改變當前目錄路徑
do_cd();
return?0;
}else?if(strcmp(“mkdir“word[0])?==?0){ //新建目錄
do_mkdir();
return?0;
}else?if(strcmp(“rmdir“word[0])?==?0){ //刪除目錄
do_rmdir();
return?0;
}else?if(strcmp(“copy“word[0])?==?0){ //復制文件
do_copy();
return?0;
}else?if(strcmp(“rename“word[0])?==?0){ //重命名
do_rename();
return?0;
}else?if(strcmp(“exit“word[0])?==?0){ //退出系統
exit(0);
return?0;
}
}
int?do_list(){????//列出目錄及文件
DIR*?dirp;
int?count=0;
struct?dirent*?ent;
if(strcmp(““?word[1])?==?0){???//命令不帶參數
dirp?=?opendir(“.“);??//打開當前目錄
}else{
dirp?=?opendir(word[1]);??//打開有參數的目錄
}
if(dirp?==?NULL){
cout<<“打開目錄失敗!“< return?-1;
}
while((ent=readdir(dirp))?!=?NULL){
if(ent->d_name[0]?!=?‘.‘){
cout<d_name<<“?“;
count++;
}
if(count%8==0)
cout< }
cout< closedir(dirp);??//關閉目錄
return?0;
}
int?do_cd(){???//改變當前文件夾
if((strcmp(““?word[1]))?==?0){??//不帶參數,改變失敗
return?-1;
}
if(chdir(word[1])?==?-1){???//目錄不存在
cout<<“目錄不存在!“< return?-1;
}
if(strcmp(“..“word[1])?!=?0){
cout<<“?????改變目錄?“< cout<<“?????路徑:?“;
do_pwd();???//顯示當前路徑
}else{
cout<<“?????返回上一層目錄“< cout<<“?????路徑:?“;
do_pwd();???//顯示當前路徑
}
return?0;
}
int?do_rename()
{
??//重命名文件
?if(rename(word[1]?word[2])?==?0)?
{
???? cout< ???}?
else
?????cout<
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-01-12?22:48??操作系統\
?????文件????????6437??2018-12-27?13:37??操作系統\os.cpp
?????文件???????14848??2019-01-12?22:48??操作系統\《操作系統課程設計》題目.doc
評論
共有 條評論