最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c語言中字符串分割函數(shù)及實現(xiàn)方法

 更新時間:2016年05月30日 15:16:43   投稿:jingxian  
下面小編就為大家?guī)硪黄猚語言中字符串分割函數(shù)及實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、問題引入

自己在寫一個linux下的模擬執(zhí)行指令的時候,遇到了輸入"cat a.c”,要將該字符串分解成cat和a.c兩個單獨的字符串,雖然知道有strtok的存在,但是想自己嘗試寫一下,于是就自己寫了一個,不過總是遇到這樣或那樣的問題,雖然最后調(diào)通了,不過確浪費了不少時間;后來作業(yè)交上去以后又仔細(xì)閱讀了strtok函數(shù),發(fā)現(xiàn)原來linux下已經(jīng)改成strsep,所有在這里就寫一下自己所走的過程。

2、自己寫的字符串分割函數(shù):用于分割指令,比如cat a.c最后會被分割成cat和a.c兩個字符串、mv a.c b.c最后會被分割成mv和a.c和b.c三個字符串。

具體實現(xiàn)如下:

#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]);
}

3、作業(yè)提交后又查詢了strtok,發(fā)現(xiàn)使用strtok函數(shù)會方便很多

具體示例如下:

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

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

而且在我自己的電腦的linux中的codeblog下,運行4中代碼需要0.029s,而運行3中的代碼需要0.044s,說明strsep速度確實比strtok快一些。

以上這篇c語言中字符串分割函數(shù)及實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++實現(xiàn)將s16le的音頻流轉(zhuǎn)換為float類型

    C++實現(xiàn)將s16le的音頻流轉(zhuǎn)換為float類型

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實現(xiàn)將s16le的音頻流轉(zhuǎn)換為float類型,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • Qt地圖自適應(yīng)拉伸的實現(xiàn)示例

    Qt地圖自適應(yīng)拉伸的實現(xiàn)示例

    最近需要寫一個程序,要是讓qt到程序自適應(yīng),本文主要介紹了Qt地圖自適應(yīng)拉伸的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 深入了解一下C語言中的柔性數(shù)組

    深入了解一下C語言中的柔性數(shù)組

    柔性數(shù)組是在C99中定義的,即結(jié)構(gòu)體的最后一個元素允許是未知大小的數(shù)組,這就叫柔性數(shù)組。這篇文章將通過簡單的示例為大家介紹一下柔性數(shù)組的使用,感興趣的可以了解一下
    2023-02-02
  • C和C++ const的聲明差異

    C和C++ const的聲明差異

    本文給大家簡單匯總了下C語言的const與C++的const的聲明差異,非常的簡單,也很實用,有需要的小伙伴可以參考下
    2016-03-03
  • QTableWidget設(shè)置只讓某一列可編輯的實現(xiàn)

    QTableWidget設(shè)置只讓某一列可編輯的實現(xiàn)

    本文介紹了如何將QTableWidget的某一列設(shè)置為可編輯,以便用戶可以輸入自定義數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • C++順序表的實例代碼

    C++順序表的實例代碼

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)順序表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • C語言順序表的實現(xiàn)代碼

    C語言順序表的實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)順序表的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • C/C++?Qt?TabWidget?實現(xiàn)多窗體創(chuàng)建詳解

    C/C++?Qt?TabWidget?實現(xiàn)多窗體創(chuàng)建詳解

    TabWidget組件配合自定義Dialog組件,可實現(xiàn)一個復(fù)雜的多窗體分頁結(jié)構(gòu)。這篇文章就主要介紹了如何通過TabWidget實現(xiàn)多窗體的創(chuàng)建,感興趣的小伙伴可以了解一下
    2021-12-12
  • C語言近萬字為你講透棧和隊列

    C語言近萬字為你講透棧和隊列

    對于線性表,我們可能要執(zhí)行下列操作:訪問表的第k個結(jié)點、在k這個結(jié)點之前或者之后插入一個新結(jié)點,抑或是刪除第k個結(jié)點等等操作,其中我們會遇到值對第一個或者最后一個結(jié)點插入、刪除、和訪問值的線性表,我們給它們以特殊的名稱:棧、隊列、雙端隊列
    2022-05-05
  • C語言實現(xiàn)數(shù)獨程序的示例代碼

    C語言實現(xiàn)數(shù)獨程序的示例代碼

    數(shù)獨是源自瑞士的一種數(shù)學(xué)游戲。是一種運用紙、筆進(jìn)行演算的邏輯游戲。本文將利用C語言實現(xiàn)數(shù)獨程序,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03

最新評論

兴文县| 鄂尔多斯市| 海林市| 英山县| 读书| 香港 | 和硕县| 兴国县| 郎溪县| 韶关市| 惠来县| 永康市| 建宁县| 濉溪县| 罗平县| 宜州市| 新闻| 册亨县| 石门县| 清远市| 依兰县| 南岸区| 镇雄县| 双鸭山市| 海伦市| 礼泉县| 仁寿县| 万源市| 花莲县| 玉门市| 桑植县| 衡山县| 神木县| 东莞市| 积石山| 大英县| 千阳县| 神农架林区| 高清| 精河县| 原阳县|