• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > c语言中字符串分割函数及实现方法

c语言中字符串分割函数及实现方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言字符串函数,c语言字符串比较函数,c语言字符串长度函数,c语言字符串处理函数,c语言字符串复制函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1、问题引入

自己在写一个linux下的模拟执行指令的时候,遇到了输入"cat a.c”,要将该字符串分解成cat和a.c两个单独的字符串,虽然知道有strtok的存在,但是想自己尝试写一下,于是就自己写了一个,不过总是遇到这样或那样的问题,虽然最后调通了,不过确浪费了不少时间;后来作业交上去以后又仔细阅读了strtok函数,发现原来linux下已经改成strsep,所有在这里就写一下自己所走的过程。

2、自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a.c两个字符串、mv a.c b.c最后会被分割成mv和a.c和b.c三个字符串。

具体实现如下:

#include <stdio.h>
#include<string.h>
#define MAX_LEN 128
void main()
{
  int i,length,ct=0,start = -1;
  char inputBuffer[MAX_LEN],*args[MAX_LEN];
  strcpy(inputBuffer,"mv a.c b.c");
  length=strlen(inputBuffer);
   for (i = 0; i <= length; i++) {
    switch (inputBuffer[i]){
    case ' ':
    case '\t' :        /* argument separators */
      if(start != -1){
        args[ct] = &inputBuffer[start];  /* set up pointer */
        ct++;
      }
      inputBuffer[i] = '\0'; /* add a null char; make a C string */
      start = -1;
      break;
    case '\0':         /* should be the final char examined */
      if (start != -1){
        args[ct] = &inputBuffer[start];
        ct++;
      }
      inputBuffer[i] = '\0';
      args[ct] = NULL; /* no more arguments to this command */
      break;
    default :       /* some other character */
      if (start == -1)
        start = i;
    }
   }
  printf("分解之后的字符串为:\n");
  for(i=0;i<ct;i++)
    printf("%s \n",args[i]);
}
</div>

3、作业提交后又查询了strtok,发现使用strtok函数会方便很多

具体示例如下:

#include <stdio.h>
#include<string.h>
int main()
{
  char str[] = "mv a.c b.c";
  char *p; 
  p = strtok(str, " ");
  while(p)
  {  
    printf("%s\n", p);  
    p = strtok(NULL, " ");  
  }
  return 0;
}
</div>

4、在linux2.6.29以后的版本中,strtok被strsep代替了。

具体示例如下:

#include <stdio.h>
#include<string.h>
int main()
{
  char str[] = "mv a.c b.c";
  char *p;
  char *buff;
  buff=str;
  p = strsep(&buff, " ");
  while(p)
  {
    printf("%s\n", p);
    p = strsep(&buff, " ");
  }
  return 0;
}
</div>

而且在我自己的电脑的linux中的codeblog下,运行4中代码需要0.029s,而运行3中的代码需要0.044s,说明strsep速度确实比strtok快一些。

以上这篇c语言中字符串分割函数及实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言中函数返回字符串的方法汇总
  • C语言 字符串首字母转换成大写简单实例
  • c语言 数据结构实现之字符串
  • c语言将字符串中的小写字母转换成大写字母
  • C语言中时间戳转换成时间字符串的方法
  • C语言实现返回字符串函数的四种方法
  • 浅谈C语言之字符串处理函数
  • c语言中字符串分割函数及实现方法
  • C语言左旋转字符串与翻转字符串中单词顺序的方法
  • C语言中用于修改文件的存取时间的函数使用

相关文章

  • 2017-05-28C语言使用openSSL库DES模块实现加密功能详解
  • 2017-05-28解析C语言基于UDP协议进行Socket编程的要点
  • 2017-05-28深入解析C++编程中的纯虚函数和抽象类
  • 2017-05-28C++中delete和delete[]的区别说明
  • 2017-05-28对C语言中指针的理解与其基础使用实例
  • 2017-05-28C++高级程序员成长之路
  • 2017-05-28C++快速排序的分析与优化详解
  • 2017-05-28C++中的extern声明变量详解
  • 2017-05-28MFC中exe图标修改的方法
  • 2017-05-28while和for可以相互转换的例子分享

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c语言标准库中字符转换函数和数字转换函数
    • C++实现单链表按k值重新排序的方法
    • C语言将数组中元素的数排序输出的相关问题解决
    • C++中的局部变量、全局变量、局部静态变量、全局静态变量的区别
    • C++ 整数拆分方法详解
    • 浅谈c++中的stl中的map用法详解
    • 详解C++中const_cast与reinterpret_cast运算符的用法
    • 浅析直接插入排序与折半插入排序
    • C语言 数据结构之中序二叉树实例详解
    • C++ 关于STL中sort()对struct排序的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有