strtok介绍
這篇文章中我們來介紹strtok函數(只介紹,不涉及具體實現)
初步認識
這個函數是用來實現字符串的分割的。首先我們要給定一些分隔符,這個函數能讓讓字符串按照這些分隔符分割成一個個的小字符串。
 舉個例子:hello world@qq.com,這里分隔符有:‘空格’、‘@’和‘.’,我們利用strtok函數就可以把這個字符串分為”hello“,”world“,”qq“,"com"這四個字符串。
進一步認識
該函數的返回值和參數:char * strtok ( char * str, const char * sep );
 函數作用的起始地址是:
 1.如果形參char* str對應輸入的實參是一個具體的字符串的名稱,那么作用起始地址就是該字符串首元素地址**(strtok函數作用后會將其第一個遇到的分隔符改為‘\0’,然后將其地址保存并返回)**
 2.如果形參char* str對應輸入的實參是空指針(即NULL),則函數起始地址就是截至目前strtok函數保存的地址。
 返回值:形象地說,函數作用于字符串后會在字符串中遇到的第一個分隔符處將字符串截斷,然后返回函數該次作用的起始地址。
 參數: char* str——一個具體的字符串的名稱或者空指針,作用是給函數劃定一個作用的區域
 const char* sep——這個參數是一個字符串的名稱(地址),該字符串是函數所識別的分隔符按順序排成的集合,
 比如說我們剛剛距離的字符串中, sep = ” @.“。
 由于strtok函數作用于字符串后會改變字符串的內容,所以我們一般都是先將字符串拷貝一份,然后用strtok作用于拷貝份。
示例
int main() {char* str = "hello world@qq.com";const char* sep = " @.";char tmp[20] = { 0 };strcpy(tmp, str);char* ret = NULL;for (ret = strtok(tmp, sep); ret != NULL; ret = strtok(NULL, sep)){printf("%s\n", ret);}return 0; }程序最終打印結果如下
 
 這段代碼中,我們先將字符串拷貝到了tmp中,然后再用循環語句實現對strtok作用于字符串后產生的小字符串一一打印。
總結
 
                            
                        - 上一篇: Linux管理
- 下一篇: 数据仓库中的ETL,到底是什么
