百度实习生应聘:网试题 (路径解析)
时间:2010-07-13
来源:互联网
大概是怎样的:用 C 语言实现一个 UNIX 路径解析函数。
例如:输入:/abc/../k 输出:/k
输入:./abc/./k 输出:abc/k
我想就是能合理理解 “./”和 “../”吧。
作者: xunen 发布时间: 2010-07-13
作者: benjiam 发布时间: 2010-07-13
作者: 没本 发布时间: 2010-07-13
没本 发表于 2010-07-13 21:32
输入:/abc/../k 输出:/abc
=====>>>
输入:/abc/../k 输出:/k
不好意思,写错了
翻看Andrew S. Tanenbaum大师写的《操作系统设计与实现》文件系统那一章,是采用多个函数并结合读取磁盘i节点方式实现的。在这里好像不适用。
作者: xunen 发布时间: 2010-07-13
死一点的方法, 一个字符一个字符处理,状态也不多。。
这个,应该用词法分析去做?估计百度才会招你去实习。
作者: peidright 发布时间: 2010-07-13
char *real_path(const char *path, char *done_path)
逐个分析path,遇到“./”,跳过;遇到“../”,当前指针指向上一个路径的结尾
(当然用一个变量记录当前路径的结尾)。看行不行?个人觉得用堆栈很麻烦。词法分析是什么,不太懂。
作者: xunen 发布时间: 2010-07-13
作者: mirnshi 发布时间: 2010-07-13
大概就这样子,程序不多,搂主写出来吧。 大概过程,可以这样, 搜索 "." ,搜索到第一个点的时候, 看下一个符号是什么, 如果又是.
采取某种行动, 如果是/ 采取某种行动,等等, 处理完了,继续搜索下一个点, 直到搜索完成。
作者: peidright 发布时间: 2010-07-13
static int link_path_walk(const char *name, struct nameidata *nd)
太长我不贴了,有兴趣的自己找来读吧,这段代码不难。
作者: 没本 发布时间: 2010-07-13
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28