Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【7天入门RTOS网络编程】Wendell Day1-2 文件系统相关作业☆☆
发布于 2018-10-20 22:44:59 浏览:1809
订阅该版
* 本帖最后由 san兄弟 于 2018-10-24 12:55 编辑 * 学习了【7天入门RTOS网络编程】的课程,感觉课程讲解很详细,包括常见的问题及解决方法都整理的很详细,学习了第一至三节,实用Env工具配置的方法组织项目文件实在是太方便了,解决了常规的自己手动构建文件工程的繁琐,点赞!现在将DAY1-2的作业提交在此,虽然有些晚了,但是确实经过了仔细的思考。 作业1:获取并运行文件系统相关示例程序。前三节都按照教程一步步学习了,其中也遇到了一些问题,都按照群文件给出的方法一一解决了,将学习过程中的部分截图贴出来吧。![1.jpg](/uploads/201810/20/223000c066156h6q5w1n5n.jpg) ![2.jpg](/uploads/201810/20/223001grepjg4jzeweewrg.jpg) ![3.jpg](/uploads/201810/20/223001dz887n8enype0w11.jpg) ![4.jpg](/uploads/201810/20/223001dgk2su63klhuuxt8.jpg) ![5.jpg](/uploads/201810/20/223001yvez1m696fzmcp65.jpg) 作业2:文本数据替换,1.txt 里面有文本信息 123456789,将 123 替换为 abc。```#include
#include
/* 当需要使用文件操作时,需要包含这个头文件 */ static void replace_sample(void) /*homework day1-2,question 2*/ { int ret,seek_flag=0; int fd, size; DIR *dirp; char *p_str; struct dirent *dp; char s[] = "123456789
", buffer[80]; rt_kprintf("homework day1-2,question 2
"); /* 创建目录*/ ret = mkdir("/homework1_2", 0x777); if (ret < 0) { /* 创建目录失败*/ rt_kprintf("dir /homework1_2 error!
"); } else { /* 创建目录成功*/ rt_kprintf("mkdir /homework1_2 ok!
"); } /* 打开/homework1_2 目录*/ dirp = opendir("/homework1_2"); if (dirp == RT_NULL) { rt_kprintf("open directory /homework1_2 error!
"); } else { rt_kprintf("open directory /homework1_2 OK!
"); /* 读取目录*/ while ((dp = readdir(dirp)) != RT_NULL) { rt_kprintf("found %s
", dp->d_name); if(strcmp(dp->d_name, "1.txt") == 0) { seek_flag =1; break; } } if(seek_flag==0) { rt_kprintf("current directory do not have 1.txt
"); fd = open("/homework1_2/1.txt", O_WRONLY | O_CREAT); if (fd >= 0) { rt_kprintf("fd = %d
", fd); rt_kprintf("creat 1.txt OK
"); write(fd, s, sizeof(s)); } else { rt_kprintf("creat 1.txt error
"); } close(fd); } fd = open("/homework1_2/1.txt", O_RDWR); if (fd >= 0) { size = read(fd, buffer, sizeof(buffer)); if(size >= 0) { rt_kprintf("read file 1.txt : %s
", buffer); p_str = strstr(buffer, "123"); if (NULL == p_str) { rt_kprintf("do not find string 123.
"); } else { rt_kprintf("replace 123 with abc.
"); strncpy(p_str, "abc", 3); rt_kprintf("changed buffer : %s
", buffer); /*当前文件偏移量归零*/ lseek(fd,0,SEEK_SET); /*写入长度size与读取长度相同,直接写入sizeof(buffer)后面会带有乱码*/ write(fd, buffer, size); } } else { rt_kprintf("read 1.txt error
"); } } close(fd); /*检查是否替换成功*/ rt_kprintf("check file 1.txt
"); fd = open("/homework1_2/1.txt", O_RDONLY); if (fd >= 0) { size = read(fd, buffer, sizeof(buffer)); rt_kprintf("read file 1.txt : %s
", buffer); } else { rt_kprintf("check 1.txt error
"); } close(fd); } /* 关闭目录 */ closedir(dirp); } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(replace_sample, replace sample);``` 运行结果: 第一次运行结果截图:生成1.txt,写入内容,并替换指定字符串。![6.jpg](/uploads/201810/20/223817aqz4b68u46gglze2.jpg) 第二次运行结果截图:打开1.txt,报错,找不到指定字符串,因为第一次执行已经替换。![7.jpg](/uploads/201810/20/223817hih17gslzoss7lo0.jpg) 执行之后,打开sd.bin中的homework1_2/1.txt,显示如下:![8.jpg](/uploads/201810/20/224055i1jznpwzqqk11nls.jpg) 作业3:文件匹配: 有一系列文件如:1.txt, 12.txt, 123.txt,从中找出1.txt,并将文件内容输出出来。其实作业2中已经包含了作业3的内容,作业3代码如下:```static void find_txt_sample(void) /*homework day1-2,question 2*/ { int seek_flag=0; DIR *dirp; struct dirent *dp; int fd, size; char buffer[80]; rt_kprintf("homework day1-2,question 3
"); /* 打开/homework1_2 目录*/ dirp = opendir("/homework1_2"); if (dirp == RT_NULL) { rt_kprintf("open directory /homework1_2 error!
"); } else { rt_kprintf("open directory /homework1_2 OK!
"); /* 读取目录*/ while ((dp = readdir(dirp)) != RT_NULL) { rt_kprintf("found %s
", dp->d_name); if(strcmp(dp->d_name, "1.txt") == 0) { seek_flag =1; break; } } if(seek_flag==0) { rt_kprintf("current directory do not have 1.txt
"); fd = open("/homework1_2/1.txt", O_WRONLY | O_CREAT); if (fd >= 0) { rt_kprintf("creat 1.txt OK
"); } else { rt_kprintf("creat 1.txt error
"); } close(fd); } else { fd = open("/homework1_2/1.txt", O_RDWR); if (fd >= 0) { size = read(fd, buffer, sizeof(buffer)); if(size >= 0) { rt_kprintf("read file 1.txt : %s
", buffer); } } else { rt_kprintf("read 1.txt error
"); } close(fd); } } /* 关闭目录 */ closedir(dirp); } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(find_txt_sample, find txt sample);```运行结果:![10.jpg](/uploads/201810/20/224353eut1eshs75vinmst.jpg) 程序源码:![homework1_2.c](/uploads/201810/20/224444yubyznere3v3v1kz.attach)
查看更多
2
个回答
默认排序
按发布时间排序
XQQ
2018-10-22
这家伙很懒,什么也没写!
很认真;P
san兄弟
2018-10-22
这家伙很懒,什么也没写!
>很认真 --- 见笑见笑了:handshake
撰写答案
登录
注册新账号
关注者
0
被浏览
1.8k
关于作者
san兄弟
这家伙很懒,什么也没写!
提问
8
回答
36
被采纳
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
RT-Thread项目助手v0.2.0 - 支持Env Windows
2
RttreadV5.10上,GD32F450Z RTC时间显示问题
3
rt-smart启动流程分析
4
EtherKit快速上手PROFINET
5
RTThread USB转串口无法接收数据
热门标签
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
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部