Strtok的使用方法
生活随笔
收集整理的這篇文章主要介紹了
Strtok的使用方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????????Strtok是包含在頭文件<string.h>的一個庫函數,這個函數的使用是非常特殊的。
char * strtok ( char * str, const char * delimiters )? ? ? ? 這一行代碼是strtok函數的定義,參數是兩個指針,前者指向一個被查找的字符串,后者指向?一個由分隔符組成的字符串。
使用演示
char arr[] = "qwe.rtyui,op";//定義被查找的數組char str[200] = { 0 };strcpy(str, arr);//創造一個數組的鏡像用于對比const char* p = ".,(";//創建分隔符字符串char* s = strtok(str, p);//使用一個字符指針來接收函數的返回值printf("%s\n", s);由于函數的返回值是字符指針,所以用一個字符指針接收并打印出來。
在第一次strtok生效時,函數會將第一個分隔符的地址記錄下來并將其改為\0(也就是字符串的結束標志),并返回分隔符之前字符串的地址,所以以上代碼的輸出將為"qwe"。
那么第一個分隔符之后的字符串怎么辦呢,將函數第二次調用即可,strtok函數第二次及以后的調用不需要再傳遞被查找字符串的地址了,因為函數已經將第一個分隔符的地址記錄了,傳入一個空指針即可重復以上操作,即返回被分割的字符串的地址,見以下完整代碼及結果:
#include<stdio.h> #include<string.h>int main() {char arr[] = "qwe.rtyui,op";char str[200] = { 0 };strcpy(str, arr);const char* p = ".,(";char* s = strtok(str, p);printf("%s\n", s);s = strtok(NULL, p);//第二次調用查printf("%s\n", s);s = strtok(NULL, p);//第三次調用printf("%s\n", s);s = strtok(NULL, p);//第四次調用printf("%s\n", s);printf("%s\n", str);//檢測原字符串return 0; }?每次調用均返回分隔符之前的字符串,而在沒有更多分隔符后,函數返回空指針,并且由最后的打印原函數可以看出,被strtok操作的函數將被改變。
常用寫法
上述演示過程代碼過于冗余且不方便實現,正確寫法為使用for循環來操作strtok函數。代碼如下:
for (s = strtok(str, p); s != NULL; s = strtok(NULL, p))//將循環的起始部分設為函數的第一次調用,在返回值為空前循環,每次循環輸出當前結果。{printf("%s\n",s);}總結
以上是生活随笔為你收集整理的Strtok的使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LT8712X DP转HDMI VGA转
- 下一篇: 瑰雪黑阳rwby手游辅助材料 瑰雪黑阳