字符串分割 函数实现
生活随笔
收集整理的這篇文章主要介紹了
字符串分割 函数实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
char ** strsplit(char *line, char delimeter, int *count, int limit)//line是傳入字符串
delimeter是用來進(jìn)行分割的字符
count是一個用來計數(shù)的變量,傳入傳出,函數(shù)執(zhí)行完之后,表示將line分成的字符串個數(shù)
limit用來限制分割次數(shù),函數(shù)從左至右進(jìn)行分割,如果值設(shè)置過大,表示不限制;
例如limit=2,但line中有多個delimeter,則line也只分割一次,從第一個delimeter處分割開來!
#include <iostream> // std::cout #include<string> using namespace std;char * strim(char *str)//去掉兩端空格 {char *end, *sp, *ep;size_t len;sp = str;end = ep = str + strlen(str) - 1;while (sp <= end && isspace(*sp)) sp++;while (ep >= sp && isspace(*ep)) ep--;len = (ep < sp) ? 0 : (ep - sp) + 1;sp[len] = '\0';return sp; }char ** strsplit(char *line, char delimeter, int *count, int limit)// {char *ptr = NULL, *str = line;char **vector = NULL;*count = 0;while ((ptr = strchr(str, delimeter))) {*ptr = '\0';vector = (char **)realloc(vector, ((*count) + 1)*sizeof(char *));vector[*count] = strim(str);str = ptr + 1;(*count)++;if (--limit == 0) break;}if (*str != '\0') {vector = (char **)realloc(vector, ((*count) + 1)*sizeof(char *));vector[*count] = strim(str);(*count)++;}return vector; } int main() {char** res = NULL;int count = 0;char line[] = "wo*hello*world*love";//這兒如果是char* line,則表示line是一個指向常量字符串?dāng)?shù)組的首字符,不允許更改!!!res = strsplit(line, '*', &count, 3);while (count-->0){ cout << *res << endl;res++;}res = NULL;//注意,最后res已經(jīng)越界了 system("pause");return 0; }
?
char *strchr(const char* _Str,int _Val) char *strchr(char* _Str,int _Ch) 頭文件:#include <string.h> 功能:查找字符串s中首次出現(xiàn)字符c的位置 說明:返回首次出現(xiàn)c的位置的指針,返回的地址是被查找字符串指針開始的第一個與Val相同字符的指針,如果s中不存在c則返回NULL。 返回值:成功則返回要查找字符第一次出現(xiàn)的位置,失敗返回NULL 在C語言中 strchr 和 strstr函數(shù)都被包含在<string.h>頭文件中,也就是要調(diào)用它們時要在程序前面包含<string.h>頭文件,也就是寫這個語句:#include<string.h>strchr函數(shù)原型:char * strchr(char * str, int ch); 功能就是找出在字符串str中第一次出項字符ch的位置,找到就返回該字符位置的指針(也就是返回該字符在字符串中的地址的位置),找不到就返回空指針(就是 null)。
strstr 函數(shù)原型: char * strstr(char * str1,char * str2);功能就是找出在字符串str1中第一次出現(xiàn)字符串str2的位置(也就是說字符串sr1中要包含有字符串str2),找到就返回該字符串位置的指針(也就是返回字符串str2在字符串str1中的地址的位置),找不到就返回空指針(就是 null)。
轉(zhuǎn)載于:https://www.cnblogs.com/chess/p/5259654.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的字符串分割 函数实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌通过强化固件来进一步提升安卓安全性
- 下一篇: 屏幕怎么不适配呀?