之前分享了一篇使用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的...