linux 路径分割
来源:互联网 发布:ubuntu交叉编译链路径 编辑:程序博客网 时间:2024/06/06 01:55
linux 路径分割
(1) 获得当前工作目录的绝对路径
获取当前工作目录是使用函数:getcwd。cwd指的是“current working directory”,这样就好记忆了。函数说明:
函数原型:char* getcwd(char* buffer, int len);
参数:buffer是指将当前工作目录的绝对路径copy到buffer所指的内存空间, len是buffer的长度。
返回值:获取成功则返回当前工作目录(绝对路径),失败则返回false(即NULL)。
该函数所属头文件为<direct.h>
具体使用如下例:(特别注意的是,当你使用的是Linux系统时,请注意你是否具有相关的权限,如果权限不够会导致获取失败)
#include <stdio.h>#include <direct.h>int main(){char *buffer;//也可以将buffer作为输出参数if((buffer = getcwd(NULL, 0)) == NULL){perror("getcwd error");}else{ printf("%s\n", buffer);free(buffer);}}
(2)linux下,分解路径
http://www.tuicool.com/articles/INjYrqv在做移植时, 发现了 _splitpath 在 linux 下是没有的,于是决定自己写下,也不难。
首先 百科 到如下内容:
声明定义
void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );
分解路径,把你的完整路径给分割开来,就是一个对字符串进行分割的函数
path, Full path(完整路径)
drive , Optional drive letter, followed by a colon (:)( 磁盘驱动 包含:)
dir, Optional directory path, including trailing slash. Forward slashes (/ ), backslashes (\ ), or both may be used.(文件路径,无论是以“/”,“\”)
fname, Base filename (no extension)(文件名)
ext , Optional filename extension, including leading period (.)(后缀名)
---------------------------------------- 分割线出没,请小心
Linux 下实现及测试代码如下:
#include <stdio.h>#include <string.h>#ifndef WIN32void _splitpath(const char *path, char *drive, char *dir, char *fname, char *ext);static void _split_whole_name(const char *whole_name, char *fname, char *ext);#endif/* main test */int main(void){ char *path = "/home/test/dir/f123.txt"; // char *path = "/home/test/dir/123.txt"; // char *path = "/home/test/dir/123"; // char *path = "123"; // char *path = "123.txt"; char drive[128]; char dir[128]; char fname[128]; char ext[128]; _splitpath(path, drive, dir, fname, ext); printf("path = %s\n", path); printf("dir = %s\n", dir); printf("fname = %s\n", fname); printf("ext = %s\n", ext); return 0;}#ifndef WIN32void _splitpath(const char *path, char *drive, char *dir, char *fname, char *ext){ char *p_whole_name; drive[0] = '\0'; if (NULL == path) { dir[0] = '\0'; fname[0] = '\0'; ext[0] = '\0'; return; } if ('/' == path[strlen(path)]) { strcpy(dir, path); fname[0] = '\0'; ext[0] = '\0'; return; } p_whole_name = rindex(path, '/'); if (NULL != p_whole_name) { p_whole_name++; _split_whole_name(p_whole_name, fname, ext); snprintf(dir, p_whole_name - path, "%s", path); } else { _split_whole_name(path, fname, ext); dir[0] = '\0'; }}static void _split_whole_name(const char *whole_name, char *fname, char *ext){ char *p_ext; p_ext = rindex(whole_name, '.'); if (NULL != p_ext) { strcpy(ext, p_ext); snprintf(fname, p_ext - whole_name + 1, "%s", whole_name); } else { ext[0] = '\0'; strcpy(fname, whole_name); }}#endif
0 0
- linux 路径分割
- windows与linux系统路径分割符
- java兼容windows和linux路径分割符用法
- java在Linux与win下面路径分割符
- Java代码在Window或Linux系统下使用通用分割符来分割路径
- _splitpath, _wsplitpath 分割路径
- vc 分割路径、文件名
- 路径分割 splitpath
- _splitpath, _wsplitpath 分割路径
- 路径的分割与合并
- Linux 中的文件分割
- linux 分割大文件
- nginx日志分割(linux)
- linux cronolog分割日志
- linux strsep字符串分割
- linux命令分割文件
- linux下分割文件
- linux 文本分割命令
- 紙張尺寸表 (zz)
- MyEclipse中配置struts.xml自动提示
- MAC连接安卓手机安装apk
- Binary Tree Level Order Traversal - LeetCode
- Spring学习(5)Spring 常用注解
- linux 路径分割
- [省选前题目整理][BZOJ 1486][HNOI 2009]最小圈(01分数规划)
- 原始套接字SOCK_RAW
- 开怀大笑
- C++ Socket编程步骤
- visio插入图像
- Eclipse导入javaAPI文档
- hashcode方法浅析
- 学习TQ2440之硬件篇