strtok使用

本文深入解析了C语言中的strtok函数,详细介绍了其原型、功能、参数、原理及返回值。通过实例演示了如何使用strtok函数分解字符串,并展示了其在实际应用中的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

原型: char *strtok(char *str, const char *delim);

功能:分解字符串为一组字符串。

参数说明:str为要分解的字符串,delim为分隔符字符串。

原理:找到分隔符,并用'\0'代替,即字符串的结束符。

返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<memory.h>
//打印原字符串中各个元素的值
void prints(char* s, int length)
{
    int i = 0;
    for(; i < length; i++)
        printf("i=%d %c:%d   ",i,s[i],s[i]);
    printf("\n");
}
int main(int argc, char* argv[])
{
    char s[] = "a,b,c,d,e,f";
    int length = strlen(s);
    char* delimiter = NULL;
    delimiter = strtok(s,",");
    printf("length=%d\n",length);
    int i = 1;
    while(delimiter)
    {
        printf("content:i=%d,%s\n",i,delimiter);
        prints(s,length);
        delimiter = strtok(NULL,",");
        i++;
    }
    delimiter = strtok(NULL,",");
    printf("delimiter=0x%x\n",delimiter);

    return 0;
}

ubuntu下运行结果:

mali@mali:~/Demo/string_learning$ gcc my_strtok.c -o strtok
my_strtok.c: In function ‘main’:
my_strtok.c:28:5: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘char *’ [-Wformat]
mali@mali:~/Demo/string_learning$ ./strtok 
length=11
content:i=1,a
i=0 a:97   i=1 :0   i=2 b:98   i=3 ,:44   i=4 c:99   i=5 ,:44   i=6 d:100   i=7 ,:44   i=8 e:101   i=9 ,:44   i=10 f:102   
content:i=2,b
i=0 a:97   i=1 :0   i=2 b:98   i=3 :0   i=4 c:99   i=5 ,:44   i=6 d:100   i=7 ,:44   i=8 e:101   i=9 ,:44   i=10 f:102   
content:i=3,c
i=0 a:97   i=1 :0   i=2 b:98   i=3 :0   i=4 c:99   i=5 :0   i=6 d:100   i=7 ,:44   i=8 e:101   i=9 ,:44   i=10 f:102   
content:i=4,d
i=0 a:97   i=1 :0   i=2 b:98   i=3 :0   i=4 c:99   i=5 :0   i=6 d:100   i=7 :0   i=8 e:101   i=9 ,:44   i=10 f:102   
content:i=5,e
i=0 a:97   i=1 :0   i=2 b:98   i=3 :0   i=4 c:99   i=5 :0   i=6 d:100   i=7 :0   i=8 e:101   i=9 :0   i=10 f:102   
content:i=6,f
i=0 a:97   i=1 :0   i=2 b:98   i=3 :0   i=4 c:99   i=5 :0   i=6 d:100   i=7 :0   i=8 e:101   i=9 :0   i=10 f:102   
delimiter=0x0

由此可见,strtok会改变原字符串的值,将分隔符用'\0'取代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值