日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

          歡迎訪問 生活随笔!

          生活随笔

          當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

          编程问答

          strtok.c

          發布時間:2024/1/18 编程问答 51 豆豆
          生活随笔 收集整理的這篇文章主要介紹了 strtok.c 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

          原型:char *strtok(char *s, char *delim);

          功能:分解字符串為一組字符串。s為要分解的字符串,delim為分隔符字符串。

          說明:首次調用時,s指向要分解的字符串,之后再次調用要把s設成NULL
          strtok
          s中查找包含在delim中的字符并用NULL('\0')來替換,直到找遍整個字符串。

          返回值:從s開頭開始的一個個被分割的串。當沒有被分割的串時則返回NULL
          所有delim中包含的字符都會被濾掉,并將被濾掉的地方設為一處分割的節點。

          #include <string.h> #include <stdio.h>char string[] = "A string of,tokens and some more tokens";//要分解的字符串 char seps[] = " "; //分隔符字符集的字符串 char *token;void main( void ) {printf( "%s\n\nTokens:\n", string );/* Establish string and get the first token: */token = strtok( string, seps ); //分解字符串為一組字符串while( token != NULL ){/* While there are tokens in "string" */printf( " %s\n", token );/* Get next token: */token = strtok( NULL, seps );//首次調用時,第一個參數string指向要分解的字符串,之后再次調用要把s設成NULL} }


          函數原型:char *strtok(char *s, char *delim);
          函數功能:把字符串s按照字符串delim進行分割,然后返回分割的結果。

          函數使用說:

          1.strtok函數的實質上的處理是,strtok在s中查找包含在delim中的字符并用NULL(’\0′)來替換,直到找遍整個字符串。這句話有兩層含義:(1)每次調用strtok函數只能獲得一個分割單位。(2)要獲得所有的分割單元必須反復調用strtok函數。

          2.strtok函數以后的調用時的需用NULL來替換s.

          3.形參s(要分割的字符串)對應的變量應用char s[]=”….”形式,而不能用char *s=”….”形式。

          例子如下:

          #include <stdio.h> #include <string.h> void main() { char buf[]=”Golden Global View”; char* token = strtok( buf, ” “); while( token != NULL ) { printf( ”%s “, token ); token = strtok( NULL, ” “); } return 0; }


          其結果為:

          Golden
          Global
          View

          但是如果我們把char buf[]=”Golden Global View”;換成char *buf=”Golden Global View”; 則會出錯,原因我還沒找到,如果有人發現了原因望告知于我。

          如果我們把token = strtok( NULL, ” “);換成token = strtok( buf, ” “);則while循環會成為一個無限循環,而輸出的結果就只為:Golden。我的解釋原因如下:

          在strtok函數體中有一個char 類型的指針(假設為 char *p),它的作用就是令p=s,用于保存s的起始地址。由于在隨后的處理中指針p的值會一直保存(C語言中指針的特點),因此在以后的strtok調用中用NULL來代替s的原因就是防止p被重新賦值而指向s的起始地址,從而可以保證p可以指向s的其他位置,直到最后分割完整個字符串。

          但是如果用s來代替NULL,那么每次調用strtok時,p就會指向s的初始地址,從而只能獲得第一個分割出來的字串,如上面的例子中while會是一個無限循環,而輸出的結果只能是“Golden”。

          總結

          以上是生活随笔為你收集整理的strtok.c的全部內容,希望文章能夠幫你解決所遇到的問題。

          如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。