久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C++ strtok函數(shù)詳解

 流楚丶格念 2022-01-14

文章目錄


strtok函數(shù)的作用是把字符串以規(guī)定的字符分割開:

頭文件

#include <string.h>

函數(shù)原型

char *strtok(char s[], const char *delim);

參數(shù)

  • str – 要被分解成一組小字符串的字符串。
  • delim – 包含分隔符的 C 字符串,。

返回值

該函數(shù)返回被分解的第一個子字符串,如果沒有可檢索的字符串,則返回一個空指針。

注意:

  1. 分割處理后原字符串 str 會變,變成第一個子字符串

  2. strtok函數(shù)會把分割前的字符串破壞掉,即每次分割后,原來的字符串就會少掉一部分,完整性會被破壞,。

    例如:第一次分割之后,原字符串str是分割完成之后的第一個字符串,剩余的字符串存儲在一個靜態(tài)變量中,因此多線程同時訪問該靜態(tài)變量時,則會出現(xiàn)錯誤

使用案例

strtok函數(shù)會破壞被分解字符串的完整,調(diào)用前和調(diào)用后的s已經(jīng)不一樣了,。如果要保持原字符串的完整,可以使用strchr和sscanf的組合等,。

#include <string.h>
#include <stdio.h>
 
int main () {
   char str[80] = "this is - CSDN - blog";
   const char s[2] = "-";
   char *token;
   
   /* 獲取第一個子字符串 */
   token = strtok(str, s);
   
   /* 繼續(xù)獲取其他的子字符串 */
   while( token != NULL ) {
      printf( "%s\n", token );
    
      token = strtok(NULL, s);
   }
   
   return(0);
}

輸出

this is 
 CSDN 
  blog

拓展strtok_s與strtok_r

strtok_s函數(shù)

strtok_s是windows下的一個分割字符串安全函數(shù),其函數(shù)原型如下:

char *strtok_s( char *strToken, const char *strDelimit, char **buf);

這個函數(shù)將剩余的字符串存儲在buf變量中,而不是靜態(tài)變量中,從而保證了安全性。

strtok_r函數(shù)

strtok_s函數(shù)是linux下分割字符串的安全函數(shù),函數(shù)聲明如下:

char *strtok_r(char *str, const char *delim, char **saveptr);

該函數(shù)也會破壞待分解字符串的完整性,但是其將剩余的字符串保存在saveptr變量中,保證了安全性,。

拓展用例:

linux C:

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
  
int main()  
{  
    char str[]="ab,cd,ef";  
    char *ptr;  
    char *p;  
    printf("before strtok: str=%s\n",str);  
    printf("begin:\n");  
    ptr = strtok_r(str, ",", &p);  
    while(ptr != NULL){  
    // 輸出時候 str都是 ab  也會被切割  破壞待分解字符串的完整性
        printf("str=%s\n",str);  
        printf("ptr=%s\n",ptr);  
        ptr = strtok_r(NULL, ",", &p);  
    }  
    return 0;  
}

輸入結(jié)果:

before strtok: str=ab,cd,ef 
begin: 
str=ab 
ptr=ab 
str=ab 
ptr=cd 
str=ab 
ptr=ef

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多