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

2022-04-19 07:50:09   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《c语言中字符串分割函数及实现》,欢迎阅读!
言中,字符串,分割,函数,实现
c语言中字符串分割函数及实现

1、问题引入

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

2自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cata.c两个字符串、mv a.c b.c最后会被分割成mva.cb.c三个字符串。 具体实现如下: View Code

1 #include 2 #include 3 #define MAX_LEN 128 4 void main() 5 {

6 int i,length,ct=0,start = -1;

7 char inputBuffer[MAX_LEN],*args[MAX_LEN]; 8 strcpy(inputBuffer,"mv a.c b.c"); 9 length=strlen(inputBuffer); 10 for (i = 0; i <= length; i++) { 11 switch (inputBuffer[i]){ 12 case ' ':

13 case '\t' : /* argument separators */ 14 if(start != -1){

15 args[ct] = &inputBuffer[start]; /* set up pointer */ 16 ct++; 17 }

18 inputBuffer[i] = '\0'; /* add a null char; make a C string */ 19 start = -1;

20 break;

21 case '\0': /* should be the final char examined */ 22 if (start != -1){

23 args[ct] = &inputBuffer[start]; 24 ct++;

25 }

26 inputBuffer[i] = '\0';

27 args[ct] = NULL; /* no more arguments to this command */ 28 break;

29 default : /* some other character */ 30 if (start == -1) 31 start = i;

女包、名牌包、背包:www.naitiao.com|冬装新款、流行冬装、今年流行秋冬装:dongzhuang.qqxk.net




32 }

33 }

34 printf("分解之后的字符串为:\n"); 35 for(i=0;i

36 printf("%s \n",args[i]); 37 }

3、作业提交后又查询了strtok,发现使用strtok函数会方便很多 具体示例如下: View Code

#include #include 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; }

4、在linux2.6.29以后的版本中,strtokstrsep代替了。 具体示例如下: View Code 1 #include 2 #include 3 int main() 4 {

5 char str[] = "mv a.c b.c"; 6 char *p; 7 char *buff;

8 buff=str;

9 p = strsep(&buff, " "); 10 while(p) 11 {

12 printf("%s\n", p); 13 p = strsep(&buff, " "); 14 }

女包、名牌包、背包:www.naitiao.com|冬装新款、流行冬装、今年流行秋冬装:dongzhuang.qqxk.net




15 return 0;

16 }

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

女包、名牌包、背包:www.naitiao.com|冬装新款、流行冬装、今年流行秋冬装:dongzhuang.qqxk.net




本文来源:https://www.wddqxz.cn/e91656c16194dd88d0d233d4b14e852458fb39a1.html

相关推荐