使用C語言實現字串分割

2021-08-29 07:18:40 字數 1537 閱讀 4022

之前分享了一篇使用c++(std::string 作為容器)進行字串分割的博文:

現在又想用c語言做乙個字串分割的函式,大概功能是這樣:

需要分割的字串「    this is a charactor  raw.    」 使用 ' '分割

分割之後會返回乙個char** strv 表示分割出子串str的vector,返回乙個int strc表示分割出子串的數量,在使用完畢之後自行釋放strv

strv可能是null 比如"      "使用『 』分割之後就是null。

以下介紹分割函式splitstr_c()

//* 切割字串,strv返回字串陣列,strc返回分割之後的字串數量

void splitstr_c(char* str, char c, char*** strv, int* strc)

} else}}

if(n == 0)

}}

* strc = n;

tstrv = (char**)malloc(sizeof(char*) * n);

memset(tstrv, 0, sizeof(char*)*n);

for(i = 0; i < str_size; i++)

offset_font = offset_back + 1;}}

if(offset_back < str_size)

offset_font = offset_back + 1;

}* strv = tstrv;

}

順帶給出兩個小工具函式:

//* print strv

void print_strv(char** strv, int strc) }}

//* strv使用完之後根據strc來進行釋放。

void free_strv(char** strv, int strc)

free(strv);

}}

讓我們來試一下:

char  *text = "   this  is a charactor text.    ";

//char *text = "000this00is0a0charactor0text.00";

//char *text = "this is a charactor text.";

//char *text = "a a a a s ";

char** strv = null;

int strc = 0;

splitstr_c(text, ' ', &strv, &strc);

printf("splitstr_c: %d\n", strc);

print_strv(strv, strc);

free_strv(strv, strc);

結果:

自此這個功能就實現了

使用C語言實現字串中子字串的替換

描述 編寫乙個字串替換函式,如函式名為 strreplace char strsrc,char strfind,char strreplace strsrc為原字串,strfind是待替換的字串,strreplace為替換字串。舉個直觀的例子吧,如 abcdefghijklmnopqrstuvwxy...

字串比對 C語言實現

題目內容 題目說起來很簡單,你會讀到兩個字串,每個字串佔據一行,每個字串的長度均小於10000字元,而且第乙個字串的長度小於第二個字串的。你的程式要找出第乙個字串在第二個字串 現的位置,輸出這些位置,如果找不到,則輸出 1。注意,第乙個字元的位置是0。注意,第乙個字串在第二個字串中的位置可能不止一處...

C語言實現字串拼接

實現字串的拼接 標頭檔案 include include 主程式 int main 分別求兩個字串的大小 int str size sizeof str sizeof str 0 int str1 size sizeof str1 sizeof str1 0 宣告索引值 int k,j 取出str的...