linux c实现的提取文件名的小程序

/*@author
etangyushan
 *工作中很多时候会和文件名打交道,有时候只需要文件名称,就写了这么一个小程序
 *这个函数实现了把一个文件的绝对路径和后缀去除,只留下文件名的功能
 *
*/
#include <stdio.h>
#include <string.h>
#include
<stdlib.h>

//找到最后的slash(/)
int last_mark (char *str, char mark)
{
 int
site = 0;  
 int count = 0;
 while (site <=
strlen(str))
 {
  if (str[site++] ==
mark)
  {
   count =
site; 
  }
 }
 return count;
}

//找到第一个dot(.)
int first_mark (char *str, char mark, int
num)
{
 int count = num;
 while
(1)  
 {
  if (str[count++] ==
mark)
  {
   break;
  }
 }
 return
count; 
}

/* 从文件全名中把文件名提取出来,没有后缀 */

int substr (char *srcstr, char **decstr, int lastslash, int
firstdot)
{
 int i = 0;
 //int ls = lastslash;
 char
*str = *decstr;
 printf("last=%d,first=%d\n", lastslash,
firstdot);
 printf("size=%d\n", firstdot-lastslash);
 int size =
firstdot-lastslash-1;
 for (i=0; i<size;
i++)
 {
  //str[i] =
srcstr[ls++];
  printf("...%c...\n",srcstr[lastslash]);
  str[i]
= srcstr[lastslash++];
 }
}

//测试
int main()
{
 char *file =
"/root/etc/init.d/mytettttt.c";
 char *name =
(char*)malloc(256);
 int lastnum = last_mark (file,
‘/‘);
 //printf ("lastnum=%d\n", lastnum);
 int firstnum =
first_mark (file, ‘.‘, lastnum);
 //printf ("firstnum=%d\n",
firstnum);
 substr (file, &name, lastnum, firstnum);
 printf
("name = %s\n", name);
 free(name);
 name = NULL;
}

linux c实现的提取文件名的小程序,布布扣,bubuko.com

时间: 2024-12-09 21:32:17

linux c实现的提取文件名的小程序的相关文章

开发一个微笑小程序示例

一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开发与管理->配置服务器中,点击“开发者设置”.3.会获得一个AppID,记录AppID,后面创建项目时会用到. 注意:如果要以非管理员微信号在手机上体验该小程序,那么我们还需要操作“绑定开发者”.即在“用户身份”-“开发者”模块,绑定上需要体验该小程序的微信号.本教程默认注册帐号.体验都是使用管理员微信

微信小程序开发入门与实践

基础知识---- MINA 框架 为方便微信小程序开发,微信为小程序提供了 MINA 框架,这套框架集成了大量的原生组件以及 API.通过这套框架,我们可以方便快捷的完成相关的小程序开发工作. MINA 框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,因此我们主要聚焦于数据与逻辑上. 响应的数据绑定 框架的核心是一个响应的数据绑定系统. 整个系统分为两块:视图层(View)和逻辑层(App Ser

Linux shell中提取文件名和目录名的一些方法

很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的操作是由路径中提取出文件名,从路径中提取出目录名,提取文件后缀名等等.例如,从路径/dir1/dir2/file.txt中提取也文件名file.txt,提取出目录/dir1/dir2,提取出文件后缀txt等. 下面介绍两种常用的方法来进行相关的操作. 一.使用${} 1.${var##*/} 该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边

Linux shell 提取文件名和目录名

${}用于字符串的读取,提取和替换功能,可以使用${} 提取字符串 1.提取文件名 [[email protected] log]# var=/dir1/dir2/file.txt [[email protected] log]# echo ${var##*/} file.txt 2.提取后缀 [[email protected] log]# echo ${var##*.} txt 3.提取不带后缀的文件名,分两步 [[email protected] log]# tmp=${var##*/}

小程序[邮箱提取器-EmailSplider]总结

1.背景情况 学东西做快的是付诸实践,写这个小程序的目的就是为了综合运用各个知识点,从而提升学习的效果. 2.涉及知识 A.Swing 的布局 B.Swing中,线程访问UI C.URLConnection 读取网页源码 D.IO流的基本操作 E.正则表达式的基本使用 F.Window Builder插件的发现和使用 G.jar包的制作和双击jar运行的修复 H.jdk1.8的新特性,优雅的 lambda 语法 3.效果图 1.windows上运行效果 ↓ 2.linux上运行效果 ↓ 4.源代

Linux下搭建Java环境变量并实现第一个Java小程序

1.首先,我们打开虚拟机里面的Linux操作系统,然后点击下图菜单下的虚拟机选项: 在点击虚拟机下的设置菜单,如下图所示: 这里我已经添加进去我所需要的文件夹了,我放在本机E盘下的as文件夹里面到底放了什么呢? 上图这两个压缩文件,一个是android studio的压缩包,上年发布出来的,一直没用它,今天本来想在windows下安装这个软件,发现所需要的jdk是1.7,而我在windows下的jdk版本为1.6,所以打算在Linux操作系统下安装jdk1.7,并安装andoid studio工

Linux中ctags、make以及进度条小程序(\r的应用)

一.ctags  查看函数定义的好工具 ctags -R 在当前目录建立tags文件 ctrl +]  + 回车 跳到函数定义处 ctrl + t 返回 二.make与Makefile make 是一条命令 Makefile 是一个文件 make的执行需要一个Makefile文件 Makefile 两个重要关系 依赖关系 依赖方法 touch Makefile/makefile 1 依赖方法前面要有Tab键 2 进行过程从上向下 向下时只要有一个可以执行就回退(向上走.退栈) 不再执行下面的(伪

提取文件名和目录名的一些方法

很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的操作是由路径中提取出文件名,从路径中提取出目录名,提取文件后缀名等等.例如,从路径/dir1/dir2/file.txt中提取也文件名file.txt,提取出目录/dir1/dir2,提取出文件后缀txt等. 下面介绍两种常用的方法来进行相关的操作. 一.使用${} 1.${var##*/}该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的

解决sublime text3 文件名,小框框的办法

解决sublime text3 文件名,小框框的办法 之前一直都是用的英文命名的文件夹,到前几天才发现,用中文,来命名文件夹出现了乱码问题. 今天晚上,自己也在网上去百度了很多方案,好像大部分都不太有用,然后最后找到了一篇,发现还是挺有用,把它分享给大家. 这个也是copy别人的,嘿嘿. 言归正传,下面开始说解决方案,挺简单的. 下面是步骤: (1)打开sublime text3,找到上面的菜单选项(preferences),下面有一个setting-user (2)然后作如下配置 { "dpi