用C语言实现PHP的basename函数
来源:互联网 发布:c语言 void关键字 编辑:程序博客网 时间:2024/06/02 06:11
#include <stdio.h>#include <stdlib.h>#include <string.h>/***********************************Author : DemonWebsite : http://demon.twE-mail : 380401911@qq.com***********************************//* {{{ php_basename */void php_basename(char *s, size_t len, char *suffix, size_t sufflen, char **p_ret, size_t *p_len){ char *ret = NULL, *c, *comp, *cend; size_t inc_len, cnt; int state; c = comp = cend = s; cnt = len; state = 0; while (cnt > 0) { inc_len = 1; if (*c == '/' || *c == '\\') { if (state == 1) { state = 0; cend = c; } } else { if (state == 0) { comp = c; state = 1; } } c += inc_len; cnt -= inc_len; } if (state == 1) { cend = c; } if (suffix != NULL && sufflen < (size_t)(cend - comp) && memcmp(cend - sufflen, suffix, sufflen) == 0) { cend -= sufflen; } len = cend - comp; if (p_ret) { ret = malloc(len + 1); memcpy(ret, comp, len); ret[len] = '\0'; *p_ret = ret; } if (p_len) { *p_len = len; }}/* }}} *//* {{{ proto string basename(string path [, string suffix]) Returns the filename component of the path */char *basename(char *string, char *suffix){ char *ret; int string_len = strlen(string), suffix_len = strlen(suffix); size_t ret_len; php_basename(string, string_len, suffix, suffix_len, &ret, &ret_len); return ret;}/* }}} */int main(void){ char *path = "/home/httpd/html/index.php"; char *file = basename(path, ""); printf("%s\n", file); free(file); file = basename(path, ".php"); printf("%s\n", file); free(file); return 0;}
原文链接:http://demon.tw/programming/c-php-basename.html
- 用C语言实现PHP的basename函数
- C语言模拟php basename() 函数
- PHP basename()函数
- PHP basename 函数 linux下中文路径的问题解决方法
- PHP basename 函数 linux下中文路径的问题解决方法
- php中有关目录的几个函数 basename() dirname() pathinfo()
- 常用函数两个C函数 pnp_log basename
- PHP目录函数basename()与dirname()
- PHP几个函数pathinfo()、dirname()、basename()
- Linux C中的basename函数用法示例
- PHP basename()、dirname()、pathinfo()函数在linux环境下的注意事项
- 用C语言实现参数个数可变的函数
- 一个简单用C语言实现的日志函数
- 用C语言实现参数个数可变的函数
- 一个简单用C语言实现的日志函数
- 用C语言实现参数个数可变的函数
- 获得操作系统版本的一个函数。用c语言实现
- 用c语言实现一个自己的atof()函数
- oracle开发之触发器
- 奇怪的java日期
- Spring:SimpleMappingExceptionResolver异常处理
- shell中的shift命令
- 【GLSL教程】(三)在OpenGL中向shader传递信息
- 用C语言实现PHP的basename函数
- 【Html5每日练习】canvas笑脸
- postgresql 函数
- calcHist的使用
- AS3 OptionsList ---- 选项框列表类
- __ratelimit: XXX callbacks suppressed
- 【GLSL教程】(五)卡通着色
- Oracle lock 锁机制 总结
- java 去掉换行符等特殊字符