strtok函数与函数用法实例
一:函數(shù)簡(jiǎn)介:
使用strtok函數(shù)需要索引頭文件#include<string.h>,strtok函數(shù)通常用于分割以及重組。被特殊字符間隔的字符串。
strtok的函數(shù)原型為char *strtok(char *str, char *sep)strtok()在參數(shù)str的字符串中發(fā)現(xiàn)參數(shù)sep中包含的分割字符時(shí),則會(huì)將該字符改為\0 字符。在第一次調(diào)用時(shí),strtok()必需給予參數(shù)str一個(gè)需要進(jìn)行分割的字符串,往后的調(diào)用則應(yīng)將參數(shù)s設(shè)置成NULL。每當(dāng)strtok函數(shù)被成功調(diào)用,該函數(shù)都會(huì)返回一個(gè)指向已經(jīng)成功分割的子字符串的指針。
二:示例:
關(guān)于strtok函數(shù)用法舉例如下:
現(xiàn)在我們需要從一串字符:I,&LOVE,CHIAN,&中取出密碼:ILOVECHIAN我們就可以運(yùn)用strtok函數(shù)進(jìn)行操作.
1.對(duì)字符串做一份拷貝:
char arr1[20]="I&LOVE,CHIAN,&";
char arr2[30]={0}; strcmp(arr2,arr1);
2.確定分割字符:
char* str=“, &”’;
3.使用strtok函數(shù):
for(str=strtok(arr2,str);str!=NULL;str=strtok(NULL,str)
{printf("%s ,str);}
在這個(gè)for循環(huán)語(yǔ)句中,
首次調(diào)用str函數(shù):str=strtok(arr2,str),該函數(shù)將第一個(gè)分割字符:'&'更改為\0,指針str指向字符'I'的地址,因此首次打印可打印出字符‘I’。
之后的調(diào)用:str=strtok(NULL,str),之后的調(diào)用該函數(shù)第一個(gè)參數(shù)需要傳遞一個(gè)空指針,函數(shù)會(huì)從上一次調(diào)用被更改為'\0'的分隔符之后的地址向后繼續(xù)查找字符串中的分割字符。
三:實(shí)例運(yùn)用:
例題:倒置字符串,多組輸入,將每一句話中的字母倒置,標(biāo)點(diǎn)不倒置, 一次輸出倒置后的字符串,如原句有多個(gè)空格,僅以一個(gè)空格間隔。
實(shí)例:輸入:I? ?love? ? ? china.? ? ? ? 輸出china. love I
四:源碼:
#include<stdio.h>
#include<string.h>
int main()
{
?? ?char* arr1[10];//每個(gè)指針用于標(biāo)記每個(gè)字符串首地址
?? ?char arr2[]={0};
?? ?while(gets(arr2))//while (scanf("%s",&arr2)!=EOF)多組輸入
?? ?{
?? ?char arr3[30]={0};
?? ?strcpy(arr3,arr2);//保留一份原字符串a(chǎn)rr2
?? ?const char* sep=" ";//分隔符字符串,可自行設(shè)置多個(gè)或其他的分割字符
?? ?char* str=NULL;//初始化
?? ?int i=0;
?? ?for(str=strtok(arr3,sep);str!=NULL;str=strtok(NULL,sep))
?? ?{
?? ??? ?arr1[i]=str;//存儲(chǔ)每個(gè)字母(子字符串)的首地址
?? ??? ?i++;
?? ?}
?? ?int count=i-1;
?? ?for(int j=count;j>=0;j--)
?? ?{
?? ??? ?printf("%s ",arr1[j]);
?? ?}
?? ?printf("\nPlease input agin:\n");
? ? }
?? ?return 0;
}
?
總結(jié)
以上是生活随笔為你收集整理的strtok函数与函数用法实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微搭低代码入门教程03
- 下一篇: 酷比魔方 iwork10 旗舰版