int mkdir(string* str) { char fName[20]; strcpy(fName, str[1].c_str()); //检查目录名是否合法 if (!strcmp(fName, ""))return 0; if (str[1].length() > 10) { cout << "目录名太长!请重新输入!" << endl; return 0; } if (!strcmp(fName, ".") || !strcmp(fName, "..")) { cout << "目录名称不合法!" << endl; return 0; } //找当前目录下是否有目录重名 for (int pos = 2; pos < MSD + 2; pos++) { if (!strcmp(curDir->directItem[pos].fileName, fName)&&curDir->directItem[pos].type==1) { cout << "当前目录下已存在目录重名!" << endl; return 0; } } //检查当前目录下空间是否已满 int i; for (i = 2; i < MSD + 2; i++) if (curDir->directItem[i].firstDisk == -1)break; if (i >= MSD + 2) { cout << "当前目录下空间已满" << endl; return 0; } //检查是否有空闲磁盘块 int j; for (j = USER_ROOT_STARTBLOCK + 1; j < DISK_NUM; j++) if (fat[j].state == 0) { fat[j].state = 1; break; } if (j >= DISK_NUM) { cout << "无空闲盘块!" << endl; return 0; }
时间: 2024-04-27 08:22:15 浏览: 96
这段代码实现了一个创建目录的函数,它的功能是在当前目录下创建一个指定名称的子目录。函数中的参数是一个字符串指针,表示要创建的目录名称。函数首先检查目录名是否合法,如果目录名为空或者长度超过了限制,则输出提示信息并返回。接着检查当前目录下是否有目录名重复的情况,如果有则输出提示信息并返回。然后检查当前目录下空间是否已满,如果已满则输出提示信息并返回。接下来检查是否有空闲的磁盘块,如果没有则输出提示信息并返回。如果以上所有检查都通过了,则在当前目录下创建一个新的目录,并在文件分配表中分配一个新的磁盘块来保存该目录的内容。最后返回创建成功的标志。
相关问题
mkdir(folder_name.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);在程序中上述代码的声明
`mkdir(folder_name.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)` 这一行代码的声明如下:
```c++
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
```
其中:
- `mkdir` 是一个系统调用,用于创建一个目录(文件夹)。
- `pathname` 是要创建的目录的路径名,类型为 `const char*`,即 C 风格的字符串。
- `mode` 是要创建的目录的访问权限,类型为 `mode_t`,通常使用 `S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH` 来设置权限。这个参数具体含义可以参考 `chmod` 函数的文档。
1、设计并实现一个用于实现目录列表(类似 DOS 下的 DIR 命令或 Linux 的 Shell 命令 ls)的函数。 2、设计并实现一个用于实现文件更名的函数。 3、设计并实现一个用于实现文件删除的函数。 4*、设计并实现创建新目录、把现有的文件拷贝到新文件的函数。 这些函数的原型如下: int fd_ls(); int fd_rename(char *oldfilename,char *newfilename); int fd_rm(char *name); int fd_mkdir(char *name); int fd_cp(char *source, char *destination); 写出以上内容的实验原理
以上的实验原理涉及文件系统操作,主要包括目录遍历、文件读写、文件拷贝和删除等操作。
1、实现目录列表函数fd_ls():
目录列表函数需要遍历当前目录下的所有文件和子目录,然后输出它们的名称、大小、权限、创建时间等信息。可以使用C语言中的dirent.h头文件中的函数opendir()和readdir()来实现目录遍历和文件读取。
2、实现文件更名函数fd_rename(char *oldfilename,char *newfilename):
文件更名函数需要查找并打开要更名的文件,然后使用C语言中的rename()函数来对文件进行更名。
3、实现文件删除函数fd_rm(char *name):
文件删除函数需要查找并打开要删除的文件,然后使用C语言中的remove()函数来删除文件。
4、实现创建新目录、把现有的文件拷贝到新文件的函数fd_mkdir(char *name)和fd_cp(char *source, char *destination):
创建新目录函数需要使用C语言中的mkdir()函数来创建新目录。文件拷贝函数需要查找并打开源文件和目标文件,然后使用C语言中的fread()和fwrite()函数来进行文件读写操作,将源文件内容拷贝到目标文件中。如果目标文件不存在,则需要先创建目标文件。
以上是文件系统操作的基本实验原理。在具体实现中,还需要考虑一些特殊情况,如文件不存在、文件名重复、权限不足等问题。
阅读全文