C语言strtok()函数详解

函数原型

char *strtok(char *str, char const *sep);

第一次调用strtok函数时,这个函数将忽略间距分隔符并返回指向在str字符串找到的第一个符号的指针,丢掉分隔符sep,添加NULL字符结尾(可以理解为用NULL替换了sep).

通过调用一系列的strtok函数,更多的符号将从str字符串中分离出来.每次调用strtok函数时,都将通过在找到的符号后插入一个NULL字符(丢掉sep)来修改str字符串.

为了读取str中的下一个符号,调用strtok函数时str参数为NULL,这会引发strtok函数在已修改过的str字符串查找下一个符号.

strtok函数的常用方法

p = strtok(buf, ",");  
while( p!=NULL ){  
    p = strtok(NULL, ",");  
    if( p==NULL ){  
        break;  
    } 
}  

例子分析

#include<string.h>
#include <stdio.h>

#define _CRT_SECURE_NO_DEPRECATE;
#pragma warning(disable:4996);
#define _CRT_SECURE_NO_WARNINGS;
void print_tokens(char *line, char const *sep);

int main()
{
	char *s = "[123456,abced,bjhu88a,ffvjbjvy,jjbjg868bj,799nbgu]";
	char *start = NULL;
	char *end = NULL;
	char dest[100];
	char dest2[100];
	char *ss;

	start = strchr(s, (int)'[');         // 找到字符'['的位置
	end = strchr(s, (int)']');           // 找到字符']'的位置

	memcpy(dest, start + 1, end - start);// 将字符串s中'['之后的所有内容都copy出来包括字符']',这是为了之后的分割字符串使用的
	dest[end - start - 1] = '\0';        // 将字符串dest的最后一个字符']'改成'\0',如果最后一个字符不是'\0'的话,那么在该字符串的最后一位是乱码的
	memcpy(dest2, start + 1, end - start);// 将字符串s中'['之后的所有内容都copy出来包括字符']',这是为了之后的分割字符串使用的
	dest2[end - start - 1] = '\0';


	printf("%s\n", dest);

	ss = strtok(dest, ",");              // 第一次调用strtok函数,第一个参数是将要分割的字符串,第二个参数是分割的字符','

	while (ss != NULL) {
		printf("%s\n", ss);
		ss = strtok(NULL, ",");          // 再次调用strtok函数
	}

	print_tokens(dest2,",");

	getchar();
	return 0;
}


void print_tokens(char *line, char const *sep) {
	//static char whitespace[] = "\t\f\r\v\n";
	char *token;

	for (token = strtok(line, sep); token != NULL; token = strtok(NULL, sep)) {
		printf("Next token is %s\n", token);

	}
}

这里写了两种函数的用法,其实没什么区别。

结果

在这里插入图片描述

  • 13
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言中的string函数主要包括字符串的处理函数和字符串的操作函数。 字符串的处理函数主要有以下几个: 1. strlen:用于计算字符串的长度,即包含的字符数目。 2. strcpy:用于将一个字符串复制到另一个字符串中。 3. strcat:用于将两个字符串连接起来。 4. strcmp:用于比较两个字符串的大小关系。 5. strchr:用于在一个字符串中查找指定字符的位置。 6. strstr:用于在一个字符串中查找指定子串的位置。 字符串的操作函数主要有以下几个: 1. sprintf:用于将格式化的数据写入字符串中。 2. sscanf:用于从字符串中读取格式化的数据。 3. strtok:用于将一个字符串按照指定的分隔符进行分割。 4. strncmp:用于比较两个字符串的前n个字符的大小关系。 5. strncpy:用于将一个字符串的部分内容复制到另一个字符串中。 6. memset:用于给字符串的指定范围内的每个字符赋予相同的值。 这些函数可以帮助我们在C语言中方便地处理字符串,实现字符串的复制、连接、比较、查找等操作。通过这些函数,我们可以更高效地处理文本数据,提高代码的可读性和可维护性。 需要注意的是,使用这些函数时要确保输入的参数合法,以避免内存越界等错误。同时,字符串的内存空间需要提前分配好,以免出现不可预知的问题。在实际编程中,我们需要灵活运用这些函数,结合具体需求,进行字符串的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值