怎么注册公司要多少钱/seo超级外链工具免费
要求:
(1)可以实现下列几条命令
dir 列文件目录
create 创建文件
delete 删除文件
read 读文件
write 写文件
(2)列目录时要列出文件名、存取权限(八进制)、文件长度、时间(创建时间,修改时间以及最后一次访问时间);
(3)源文件可以进行读写保护。
代码:
定义结构体
typedef struct {char name[MAX_NAME_LEN];//最大文件数int permission;//权限int size;//大小 char content[MAX_CONTENT_LEN];//内容char create_time[20]; //创建时间char modify_time[20]; //修改时间char access_time[20]; //最后一次访问时间
} File;
获取当前时间(在显示创建时间,修改时间和访问时间时使用,用于记录当前时间)
//获取当前时间
void get_current_time(char *buffer) {time_t now = time(NULL);struct tm *t = localtime(&now);strftime(buffer, 20, "%Y-%m-%d %H:%M:%S", t);
}
创建文件(创建时注意要赋权)
void create_file() {if (file_count >= MAX_FILES) {printf("文件数量已达上限,无法创建新文件。\n");return;}char name[MAX_NAME_LEN];int permission;printf("请输入文件名: ");scanf("%s", name);printf("请输入文件权限(八进制): ");scanf("%o", &permission);for (int i = 0; i < file_count; i++) {if (strcmp(file_system[i].name, name) == 0) {printf("文件已存在。\n");return;}}File new_file;strcpy(new_file.name, name);new_file.permission = permission;new_file.size = 0;new_file.content[0] = '\0';get_current_time(new_file.create_time);strcpy(new_file.modify_time, new_file.create_time);strcpy(new_file.access_time, new_file.create_time); file_system[file_count++] = new_file;printf("文件创建成功。\n");
}
删除文件
void create_file() {if (file_count >= MAX_FILES) {printf("文件数量已达上限,无法创建新文件。\n");return;}char name[MAX_NAME_LEN];int permission;printf("请输入文件名: ");scanf("%s", name);printf("请输入文件权限(八进制): ");scanf("%o", &permission);for (int i = 0; i < file_count; i++) {if (strcmp(file_system[i].name, name) == 0) {printf("文件已存在。\n");return;}}File new_file;strcpy(new_file.name, name);new_file.permission = permission;new_file.size = 0;new_file.content[0] = '\0';get_current_time(new_file.create_time);strcpy(new_file.modify_time, new_file.create_time);strcpy(new_file.access_time, new_file.create_time); file_system[file_count++] = new_file;printf("文件创建成功。\n");
}
读文件
void read_file() {char name[MAX_NAME_LEN];printf("请输入要读取的文件名: ");scanf("%s", name);for (int i = 0; i < file_count; i++) {if (strcmp(file_system[i].name, name) == 0) {printf("文件内容:\n%s\n", file_system[i].content);get_current_time(file_system[i].access_time); return;}}printf("文件未找到。\n");
}
写文件
void write_file() {char name[MAX_NAME_LEN];char content[MAX_CONTENT_LEN];printf("请输入要写入的文件名: ");scanf("%s", name);for (int i = 0; i < file_count; i++) {if (strcmp(file_system[i].name, name) == 0) {printf("请输入文件内容: ");getchar(); fgets(content, MAX_CONTENT_LEN, stdin);content[strcspn(content, "\n")] = '\0'; strcpy(file_system[i].content, content);file_system[i].size = strlen(content);get_current_time(file_system[i].modify_time);printf("文件写入成功。\n");return;}}printf("文件未找到。\n");
}
列出文件
void list_files() {if (file_count == 0) {printf("目录为空。\n");return;}printf("%-20s %-10s %-10s %-20s %-20s %-20s\n","文件名", "权限", "大小", "创建时间", "修改时间", "访问时间");for (int i = 0; i < file_count; i++) {printf("%-20s %-10o %-10d %-20s %-20s %-20s\n",file_system[i].name,file_system[i].permission,file_system[i].size,file_system[i].create_time,file_system[i].modify_time,file_system[i].access_time);}
}
目录
void menu() {printf("\n==== 文件系统 ====\n");printf("1. 列文件目录\n");printf("2. 创建文件\n");printf("3. 删除文件\n");printf("4. 读文件\n");printf("5. 写文件\n");printf("6. 退出\n");printf("===================\n");
}
main
int main() {int choice;while (1) {menu();printf("请输入选项: ");scanf("%d", &choice);switch (choice) {case 1:list_files();break;case 2:create_file();break;case 3:delete_file();break;case 4:read_file();break;case 5:write_file();break;case 6:printf("退出系统。\n");return 0;default:printf("无效选项,请重新输入。\n");}}
}
各个部分的代码都已分别给出,可自行在此程序上加入自己的逻辑。
完整代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>#define MAX_FILES 100 //最大文件数
#define MAX_NAME_LEN 50 //文件名字最大长度
#define MAX_CONTENT_LEN 1024 //文件最大内容typedef struct {char name[MAX_NAME_LEN];//最大文件数int permission;//权限int size;//大小 char content[MAX_CONTENT_LEN];//内容char create_time[20]; //创建时间char modify_time[20]; //修改时间char access_time[20]; //最后一次访问时间
} File;File file_system[MAX_FILES];
int file_count = 0;//获取当前时间
void get_current_time(char *buffer) {time_t now = time(NULL);struct tm *t = localtime(&now);strftime(buffer, 20, "%Y-%m-%d %H:%M:%S", t);
}//创建文件
void create_file() {if (file_count >= MAX_FILES) {printf("文件数量已达上限,无法创建新文件。\n");return;}char name[MAX_NAME_LEN];int permission;printf("请输入文件名: ");scanf("%s", name);printf("请输入文件权限(八进制): ");scanf("%o", &permission);for (int i = 0; i < file_count; i++) {if (strcmp(file_system[i].name, name) == 0) {printf("文件已存在。\n");return;}}File new_file;strcpy(new_file.name, name);new_file.permission = permission;new_file.size = 0;new_file.content[0] = '\0';get_current_time(new_file.create_time);strcpy(new_file.modify_time, new_file.create_time);strcpy(new_file.access_time, new_file.create_time); file_system[file_count++] = new_file;printf("文件创建成功。\n");
}//删除文件
void delete_file() {char name[MAX_NAME_LEN];printf("请输入要删除的文件名: ");scanf("%s", name);for (int i = 0; i < file_count; i++) {if (strcmp(file_system[i].name, name) == 0) {for (int j = i; j < file_count - 1; j++) {file_system[j] = file_system[j + 1];}file_count--;printf("文件删除成功。\n");return;}}printf("文件未找到。\n");
}//读文件
void read_file() {char name[MAX_NAME_LEN];printf("请输入要读取的文件名: ");scanf("%s", name);for (int i = 0; i < file_count; i++) {if (strcmp(file_system[i].name, name) == 0) {printf("文件内容:\n%s\n", file_system[i].content);get_current_time(file_system[i].access_time); return;}}printf("文件未找到。\n");
}//写文件
void write_file() {char name[MAX_NAME_LEN];char content[MAX_CONTENT_LEN];printf("请输入要写入的文件名: ");scanf("%s", name);for (int i = 0; i < file_count; i++) {if (strcmp(file_system[i].name, name) == 0) {printf("请输入文件内容: ");getchar(); fgets(content, MAX_CONTENT_LEN, stdin);content[strcspn(content, "\n")] = '\0'; strcpy(file_system[i].content, content);file_system[i].size = strlen(content);get_current_time(file_system[i].modify_time);printf("文件写入成功。\n");return;}}printf("文件未找到。\n");
}//列出文件
void list_files() {if (file_count == 0) {printf("目录为空。\n");return;}printf("%-20s %-10s %-10s %-20s %-20s %-20s\n","文件名", "权限", "大小", "创建时间", "修改时间", "访问时间");for (int i = 0; i < file_count; i++) {printf("%-20s %-10o %-10d %-20s %-20s %-20s\n",file_system[i].name,file_system[i].permission,file_system[i].size,file_system[i].create_time,file_system[i].modify_time,file_system[i].access_time);}
}//目录
void menu() {printf("\n==== 文件系统 ====\n");printf("1. 列文件目录\n");printf("2. 创建文件\n");printf("3. 删除文件\n");printf("4. 读文件\n");printf("5. 写文件\n");printf("6. 退出\n");printf("===================\n");
}int main() {int choice;while (1) {menu();printf("请输入选项: ");scanf("%d", &choice);switch (choice) {case 1:list_files();break;case 2:create_file();break;case 3:delete_file();break;case 4:read_file();break;case 5:write_file();break;case 6:printf("退出系统。\n");return 0;default:printf("无效选项,请重新输入。\n");}}
}
运行结果(在虚拟机上运行)
1).创建文件
2).列出文件
3).写文件
4).读文件
5).删除文件
6).删除文件
小结:
首先注意此代码在linux中编译时可能会报错如下:
因为我的代码中使用了 C99 标准引入的特性——for 循环中声明变量。然而,编译器默认未启用 C99 模式,因此报错。
解决方法:在编译时指定用c99模式,因为 C99 是现代 C 标准,支持更多特性,所以我没有考虑将代码切换兼容 C89。
列表显示时对齐问题,占位符有讲究(为了尽量得体的显示)(给出的代码的占位符都是设计的尽量显示正常的)
开始时时间都无法在同一行显示,显然有问题
那么代码就能正常运行啦,但是因为博主技术水平问题,只能写出这样的代码供大家参考。
相关文章:

【Linux】设计文件系统(C实现)
要求: (1)可以实现下列几条命令 dir 列文件目录 create 创建文件 delete 删除文件 read 读文件 write 写文件 (2)列目录时要列出文件名、存取权限(八进制)、文件长度、时间(创建时间,修改时间以及…...

详解Rust多线程编程
文章目录 多线程模型创建和管理线程自定义线程行为线程传递数据线程间通信线程池错误处理与线程Condvar(条件变量)无锁并发高性能并发库 Rust的多线程编程提供了一种安全、高效的方式来进行并发操作。Rust的并发性设计原则之一是确保线程安全,同时避免运行时的开销&…...

el-upload上传多个文件,一次请求,Django接收
1、:file-list"fileList" :on-change"handleChange" 将文件赋值到fileList 2、 :auto-upload"false" 手动触发上传 写个按钮点击执行这个 this.$refs.upload.submit(); 3、自己写上传,不会再触发上传成功或失败回调 4、 request.FI…...

Python实现网站资源批量下载【可转成exe程序运行】
Python实现网站资源批量下载【可转成exe程序运行】 背景介绍解决方案转为exe可执行程序简单点说详细了解下 声明 背景介绍 发现 宣讲家网 的PPT很好,作为学习资料使用很有价值,所以想下载网站的PPT课件到本地,但是由于网站限制,一…...

《JavaScript高级程序设计》读书笔记 20
感谢点赞、关注和收藏! 原始值包装类型 为了方便操作原始值,ECMAScript 提供了 3 种特殊的引用类型:Boolean、Number 和 String。每当用到某个原始值的方法或属性时,后台都会创建一个相应原始包装类型的对象,从而暴露…...

ASP.NET Core项目中使用SqlSugar连接多个数据库的方式
之前学习ASP.NETCore及SqlSugar时都是只连接单个数据库处理数据,仅需在Program文件中添加ISqlSugarClient的单例即可(如下代码所示)。 builder.Services.AddSingleton<ISqlSugarClient>(s > {SqlSugarScope sqlSugar new SqlSugar…...

Java面试八股文(精选、纯手打)
全国内大厂Java面试高频题库 本小册内容涵盖:Java基础,JVM,多线程,数据库(MySQL/Redis)SSM,Dubbo,网络,MQ,Zookeeper,Netty,微服务&a…...

工程设计行业内外网文件交换解决方案:FileLink助力高效、安全的跨网协作
在工程设计行业,文件交换和信息共享是项目顺利推进的关键。尤其是涉及复杂的设计图纸、技术方案、合同文件等重要资料时,如何确保文件在内外网之间的高效、安全传输,直接影响到项目的进度和质量。FileLink正是为此而生,它为工程设…...

Qt 2D绘图之三:绘制文字、路径、图像、复合模式
参考文章链接: Qt 2D绘图之三:绘制文字、路径、图像、复合模式 绘制文字 除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象…...

配置宝塔php curl 支持http/2 发送苹果apns消息推送
由于宝塔面板默认的php编译的curl未加入http2的支持,如果服务需要使用apns推送等需要http2.0的访问就会失败,所以重新编译php让其支持http2.0 编译方法: 一、安装nghttp2 git clone https://github.com/tatsuhiro-t/nghttp2.git cd nghttp…...

Redis服务配置文件 redis.conf 更新修改配置参数说明
场景: 在安装redis服务中,默认的配置项通常不能实际使用,需要修改一些配置参数 修改配置参数 1、拿到 redis.cnf 文件,此文件通常在 redis 项目源码的第一级目录下 2、修改配置内容,主要修改项如下 protect…...

Android 俩个主题的不同之处 “Theme.AppCompat vs android:Theme.Material.Light.NoActionBar”
这两种主题继承关系有明显的不同,具体区别如下: Theme.AppCompat vs android:Theme.Material.Light.NoActionBar Theme.AppCompat 是 AppCompat 支持库提供的主题,目的是提供向后兼容的支持,适用于较早版本的 Android(…...

Redis+Caffeine 多级缓存数据一致性解决方案
RedisCaffeine 多级缓存数据一致性解决方案 背景 之前写过一篇文章RedisCaffeine 实现两级缓存实战,文章提到了两级缓存RedisCaffeine可以解决缓存雪等问题也可以提高接口的性能,但是可能会出现缓存一致性问题。如果数据频繁的变更,可能会导…...

vscode ctrl+/注释不了css
方式一.全部禁用插件排查问题. 方式二.打开首选项的json文件,注释掉setting.json,排查是哪一行配置有问题. 我的最终问题:需要将 "*.vue": "vue",改成"*.vue": "html", "files.associations": { // "*.vue": &qu…...

《山海经》:北山
《山海经》:北山 北山一经单狐山求如山(水马:形状与马相似,滑鱼:背部红色)带山(䑏疏:似马,一只角,鵸鵌:状乌鸦五彩斑斓,儵鱼ÿ…...

oracle中删除指定前缀的表
近期接手做的项目,发觉数据库中有许多多余的表。究其原因,应该是同事贪图方便,将过去做过的项目复制粘贴,然后修修改改。包括数据库也是克隆过来的,然后又没有删除本项目多余的表,结果经过几个轮回…...

解决 Flutter Dio合并请求多个接口,如果一个接口500,那么导致其他请求不在执行
Flutter Dio如何自定义拦截异常 应用场景 我们一般会统一拦截DioExceptionType 如400,403,500 等错误 但有时候,有个地方合并请求多个接口,如果一个接口500,那么导致其他请求不在执行,因为统一拦截了500&…...

The selected directory is not a valid home for Go SDK
在idea里配置go语言的环境时,选择go语言的安装目录,一直提示这个 The selected directory is not a valid home for Go SDK后来查了一下,发现原来idea识别不出来 需要改一下配置文件,找到go环境的安装目录,我是默认安…...

基于云模型的车辆行驶速度估计算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于云模型的车辆行驶速度估计算法matlab仿真。在智能交通系统中,车辆行驶速度的准确估计对于交通流量监测、安全预警、自动驾驶辅助等方面具有极为重…...

MySQL有哪些日志?
MySQL主要有三种日志:undo log、redo log、binlog。前两种是InnoDB特有的,binlog是MySQL的Server层中的。 Buffer Pool buffer pool是MySQL的缓冲池,里面存储了数据页、索引页、undo页等(与数据库不一致的即为脏页)。…...

Axios:现代JavaScript HTTP客户端
在当今的Web开发中,与后端服务进行数据交换是必不可少的。Axios是一个基于Promise的HTTP客户端,用于浏览器和node.js,它提供了一个简单的API来执行HTTP请求。本文将介绍Axios的基本概念、优势、安装方法、基本用法以及如何使用Axios下载文件。…...

python学opencv|读取视频(一)灰度视频制作和保存
【1】引言 上一次课学习了用opencv读取图像,掌握了三个函数:cv.imread()、cv.imshow()、cv.imwrite() 相关链接如下: python学opencv|读取图像-CSDN博客 这次课我们继续,来学习用opencv读取视频。 【2】学习资源 首先是官网…...

【Rust WebAssembly 入门实操遇到的问题】
Rust WebAssembly 入门实操遇到的问题 什么是WebAssembly跟着教程走wasm-pack build error总结 什么是WebAssembly WebAssembly(简称Wasm)是一种基于堆栈的虚拟机的二进制指令 格式。Wasm 被设计为编程语言的可移植编译目标,支持在 Web 上部…...

掌握CMake中的变量:设置、使用及实际应用示例详解
掌握CMake中的变量:设置、使用及实际应用示例详解 在CMake中,变量的设置和使用是管理构建配置的核心部分,它使得项目配置更加灵活和动态。变量在CMake中用于保存各种数据,如路径、选项值或文件列表,可以在整个CMake配…...

React基础知识三 router路由全指南
现在最新版本是Router6和Router5有比较大的变化,Router5和Router4变化不大,本文以Router6的写法为主,也会对比和Router5的不同。比较全面。 安装路由 npm i react-router-dom基本使用 有两种Router,BrowserRouter和HashRouter&…...

[VUE]框架网页开发02-如何打包Vue.js框架网页并在服务器中通过Tomcat启动
在现代Web开发中,Vue.js已经成为前端开发的热门选择之一。然而,将Vue.js项目打包并部署到生产环境可能会让一些开发者感到困惑。本文将详细介绍如何将Vue.js项目打包,并通过Tomcat服务器启动运行。 1. 准备工作 确保你的项目能够正常运行,项…...

k8s Quality of Service
文章目录 QoS 分类规则QoS 类别影响创建 QoS 分类的案例1. Guaranteed QoS 示例示例 YAML 文件: 2. Burstable QoS 示例示例 YAML 文件: 3. BestEffort QoS 示例示例 YAML 文件: 4. 混合 QoS 示例(多个容器)示例 YAML …...

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)
顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab) 目录 顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…...

什么语言适合做 Serverless 开发?
随着云计算的普及,**无服务器架构(Serverless Architecture)**成为一种流行的开发模式,它使得开发者无需管理服务器基础设施,专注于编写应用逻辑。无服务器架构通常按需提供计算资源,能够灵活地扩展&#x…...

使用OpenCV和卡尔曼滤波器进行实时活体检测
引言 在现代计算机视觉应用中,实时检测和跟踪物体是一项重要的任务。本文将详细介绍如何使用OpenCV库和卡尔曼滤波器来实现一个实时的活体检测系统。该系统能够通过摄像头捕捉视频流,并使用YOLOv3模型来检测目标对象(例如人)&…...