Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【7天入门RTOS网络编程】Mxf Day1-2文件系统作业
发布于 2018-10-18 12:12:16 浏览:1446
订阅该版
* 本帖最后由 Mxf 于 2018-10-18 12:21 编辑 * 这星期突如其来的加班没太多时间写作业,不过还是抽出时间做了补交一下作业:P 第一题: 1、题目要求:获取并运行文件系统相关示例程序 2、完成思路:照着视频PDF做,遇到问题翻常见问题都可以解决的。 3、具体步骤:pdf里都有,这里略。 4、运行结果: ![1.png](/uploads/201810/18/114801fyw7s7hzrrysoffh.png) 第二题: 1、题目要求:文本数据替换:1.txt 里面有文本信息 123456789,将 123 替换为 abc. 2、完成思路:准备工作:首先要创建一个1.txt的文件,然后写入内容"123456789",关闭1.txt。 开始做题:打开1.txt -> 读取里面内容到到缓冲区 -> 使用strstr() 查找"123" ,找到后返回 "123"的起始地址 -> 在该地址上顺序写入 'a' 'b' 'c' -> 将缓冲区内容写回1.txt,注意要将文件的指针偏移到起始位置 -> 关闭文件 -> 完成。 3、具体步骤:见代码:```static void day1_homework2(void) { int fd, size; char buffer[20]; rt_kprintf("create 1.txt
"); //创建和读写模式打开 fd = open("/1.txt", O_WRONLY | O_CREAT); if(fd >= 0) { rt_kprintf("write 1.txt \"12345679\"
"); write(fd,"123456789",sizeof("123456789")); close(fd); } //读取文件 rt_kprintf("open 1.txt
"); // fd = open("/1.txt",O_RDWR); fd = open("/1.txt",O_RDWR); if(fd >= 0) { rt_kprintf("read 1.txt to buffer
"); size = read(fd,buffer,sizeof(buffer)); if(size < 0) return ; char *p_123; rt_kprintf("find \"123\" in buffer
"); p_123 = strstr(buffer,"123"); if(p_123 == NULL) return ; else { rt_kprintf("replace \"123\" to \"abc\"in buffer
"); *p_123++ = 'a'; *p_123++ = 'b'; *p_123++ = 'c'; rt_kprintf("buffer = %s
",buffer); int res = 0; lseek(fd,0,SEEK_SET); res = write(fd,buffer,size); //读出来多少就写进去多少 rt_kprintf("res = %d
",res); } close(fd); //关闭文件 } fd = open("/1.txt", O_RDONLY); if (fd >= 0) { size = read(fd, buffer, sizeof(buffer)); close(fd); if (size < 0) return ; rt_kprintf("1.txt 's content is: %s
" , buffer); } } MSH_CMD_EXPORT(day1_homework2,day1_homework2);``` 4、运行结果: ![2.png](/uploads/201810/18/115651e2yo1h4nhvfnfguz.png) 第三题: 1、题目要求: 文件匹配: 有一系列文件如:1.txt, 12.txt, 123.txt,从中找出1.txt,并将文件内容输出出来。 2、完成思路: 准备工作:使用循环一次性创建 1.txt , 12.txt , 123.txt 三个文件 -> 分别写入内容 "This File is 1.txt","This File is 12.txt","This File is 123.txt" -> 关闭文件。 开始做题:opendir("/")打开根目录 -> 使用readdir()遍历根目录,使用strcmp()来比对readdir()读到的文件名与"1.txt"比对 -> 找到文件 1.txt -> 打开1.txt,并将里面内容读出打印显示 -> 关闭1.txt。 3、具体步骤:见代码。```char * strmerg(char *fname,char *extname) { char *result = rt_malloc(strlen(fname)+strlen(extname)); strcpy(result,fname); strcat(result,extname); return result; } static void day1_homework3(void) { // struct stat sta; int fd; char fname[10] = "/0",extname[] = ".txt"; char content[20] = "This File is "; for(uint8_t i = 1;i<=3;i++) { char * pname; fname* = i+'0'; pname = strmerg(fname,extname); //合成文件名+扩展名 rt_kprintf("create file :%s
",pname); fd = open(pname,O_WRONLY | O_CREAT); if(fd >= 0) { char * pcontent; pcontent = strmerg(content,pname); //合成文件内容 rt_kprintf("write content in to %s :
%s
",pname,pcontent); write(fd,pcontent,strlen(pcontent)); close(fd); } } rt_kprintf("
"); struct dirent *d; struct DIR *dirp; char read_buffer[80] = {0}; int size; dirp = opendir("/"); if(dirp == RT_NULL) { rt_kprintf("open directory error!
"); } else { rt_kprintf("start find 1.txt
"); while((d = readdir(dirp)) != RT_NULL) { rt_kprintf("now finded file name is:%s
",d->d_name); if(strcmp(d->d_name,"1.txt") == 0) { rt_kprintf("1.txt has been find
"); fd = open("d->d_name",O_RDONLY); if(fd >= 0) { size = read(fd,read_buffer,sizeof(read_buffer)); rt_kprintf("size = %d
",size); rt_kprintf("The file 1.txt content is: %s.
",read_buffer); close(fd); } } } closedir(dirp); } } MSH_CMD_EXPORT(day1_homework3,day1_homework3);``` 4、运行结果: ![3.png](/uploads/201810/18/121105a231ca2ar45rwr5w.png)
查看更多
1
个回答
默认排序
按发布时间排序
heiheihei
2018-10-18
这家伙很懒,什么也没写!
暖暖
撰写答案
登录
注册新账号
关注者
0
被浏览
1.4k
关于作者
Mxf
这家伙很懒,什么也没写!
提问
6
回答
32
被采纳
0
关注TA
发私信
相关问题
1
【LWIP学习营】第一关开发环境搭建
2
LWIP学习营第一周入门移植问题汇总贴
3
【LWIP学习营】f407+lan8720A小结
4
【LwIP学习营】【第一周】仅零散记录,无主题
5
【LWIP学习营】正点原子探索者F407+LAN8720第一周小结
6
【LwIP学习营】【第一周】网络通信基础及实现TCP 聊天客户端
7
【LwIP学习营】【第一周】LWIP移植
8
【LwIP学习营】【第一周】LWIP移植
9
【LwIP学习营】【第一周】开发板适配
10
【LwIP学习营】【第一周】环境搭建和配置验证
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
组件 lwip v2.0.3 版本使用 netdev网卡的 ping 功能
2
简单两步配置RTT源码阅读环境 vsc+clangd
3
恩智浦[FRDM-MCXN947]初探 之 ADC与DAC
4
LVGL使用字库IC芯片显示中文
5
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
807
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部