LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 633|回复: 10

如何取一个字符串的前面几位

[复制链接]
发表于 2004-7-28 16:18:16 | 显示全部楼层 |阅读模式
一个字符指针,志向一个目录+文件名(如/root/hhj/makefile,)

现在我想取得目录/root/hhj/,  ??
发表于 2004-7-28 19:10:10 | 显示全部楼层
man string
发表于 2004-7-28 19:12:09 | 显示全部楼层

  1. #include <libgen.h>
  2. ...
  3. char str[128];
  4. char *path;
  5. strcpy(str, "/root/hhj/makefile");
  6. path = dirname(str);
  7. ...
复制代码

这时, path指向的就是"/root/hhj"
 楼主| 发表于 2004-7-29 14:52:36 | 显示全部楼层
谢谢了.
 楼主| 发表于 2004-7-30 11:25:52 | 显示全部楼层

doubleelec 请看。

你前面写的原码编译过了吗???

dirname 是系统命令啊,不是函数,。

谢谢
发表于 2004-7-30 12:43:35 | 显示全部楼层
man 3 dirname
你的系统上有吗?
发表于 2004-7-30 12:50:09 | 显示全部楼层
如果没有dirname

  1. #include <stdio.h>
  2. #include <string.h>

  3. int main(void)
  4. {
  5.         char buf[128];
  6.         const char *src = "/a/b/c.d";
  7.         char *p;

  8.         strcpy(buf, src);
  9.         p = strrchr(buf, '/');
  10.         p[1] = '\0';

  11.         printf("%s\n", buf);
  12.         return 0;
  13. }
复制代码

结果:/a/b/
 楼主| 发表于 2004-7-30 17:20:27 | 显示全部楼层

搞定了!谢谢!

我有dirname这个库函数。

当我man dirname出来的是命令的。
 楼主| 发表于 2004-7-30 18:09:44 | 显示全部楼层

再问一下.

有没有函数可以取得文件名呢?

比如:/root/hhj/hhj.c
取得hhj.c
发表于 2004-7-30 18:13:40 | 显示全部楼层
man 3 dirname
看来你没执行这个吧?
如果执行了,就会看到有个函数叫
basename
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表