linux c编程实现cd目录切换功能(带空格的目录名问题)

来源:互联网 发布:天猫超市销售数据 编辑:程序博客网 时间:2024/06/06 01:24

最近学习linux编程,其中学到shell编程是要求自己写个MyShell

在实现最基本的cd命令时就碰到了麻烦:chdir无法进出带空格的目录名

百度了一些都说chdir()不可进出,但实际上chdir()是可以的,需要把' '换为'\ '

以此为契机,把我今晚的工作:cd命令的实现介绍一遍



现有如下目录结构: /home/yong/Desktop/ /e e /e e e/

bash中要从/home/yong/Desktop切换到/home/yong/Desktop/ /e e /e e e/的一些办法:

cd ./Desktop/' '/'e e '/'e e e'

cd ./Desktop/" "/"e e "/"e e e"

cd ./Desktop/\ /e\ e\ /e\ e\ e/




没错,下面的工作从仿造开始

环境:

ubuntu 12.04 LTS

gcc-ver: i686-linux-gnu    4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 

要实现的功能:

输入:带空格的路径名

内部处理:利用chdir()函数cd到输入的路径

输出:切换路径后的新路径


测试样例1:

输入:

/home/yong/Desktop/' '/"e e "/e\ e\ e

输出:

/home/yong/Desktop/' '/"e e "/e\ e\ e
/home/yong/Desktop/ /e e /e e e
/home/yong/Desktop/ /e e /e e e


测试样例2:(当前目录为/home/yong/Desktop)

输入:
./' '/"e e "/e\ e\ e

输出:
./' '/"e e "/e\ e\ e
./ /e e /e e e
/home/yong/Desktop/ /e e /e e e



而我现在要通过c编程先实现cd功能(不带空格的目录名)



(以下代码均产生\040 warning,属正常情况,不必理会)

干货继续上,实现从/home/yong/Desktop/到/home/yong/Desktop/ /e e /e e e/的静态cd



接下来实现从/home/yong/Desktop/到/home/yong/Desktop/ /e e /e e e/的动态cd,先是单引号'方法作尝试



ok,来到这里就差不多了,最后是实现文章开头提及的3种办法



实验至此完满结束

/*******************************************************
 *最近发现了篇文章,同样是实现shell的,完整版的哦,值得参考
地址:点击打开链接
2015.06.01修改
0 0
原创粉丝点击