C语言strtok()函数详解

article/2025/10/12 16:12:11

函数原型

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);}
}

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

结果

在这里插入图片描述


http://chatgpt.dhexx.cn/article/cqE4W49H.shtml

相关文章

数据库面试题——内连接与外连接、左连接与右连接的区别

内连接与外连接的区别: 1、连接结果不同 内连接的连接结果仅包含符合连接条件的行&#xff0c;参与连接的两个表都必须符合连接条件&#xff1b;而外连接的连接结果不仅包含了符合连接条件的行&#xff0c;同时还包括不符合自身条件的行&#xff0c;其中还包括左外连接、右外连…

sql中内连接和外连接的区别

对于两张表&#xff0c;外连接和内连接的区别在于&#xff1a; 内连接&#xff1a;只显示两表id匹配的左外连接&#xff1a;显示join左边的表的所有数据&#xff08;不管两表是否匹配&#xff09;&#xff0c;对于不匹配的部分都用NULL显示右外连接&#xff1a;与左外连接相反…

左连接 ,右连接,内连接和全外连接的4者区别

基本定义&#xff1a; left join &#xff08;左连接&#xff09;&#xff1a;返回包括左表中的所有记录和右表中连接字段相等的记录。 right join &#xff08;右连接&#xff09;&#xff1a;返回包括右表中的所有记录和左表中连接字段相等的记录。 inner join &#xff08;等…

数据库中的内连接、自然连接和外连接的区别

数据中的连接join分为内连接、自然连接、外连接&#xff0c;外连接又分为左外连接、右外连接、全外连接 当然&#xff0c;这些分类都是在连接的基础上&#xff0c;是从两个表中记录的笛卡尔积中选取满足连接的记录。笛卡尔积简单的说就是一个表里的记录要分别和另外一个表的记…

交叉连接、内连接和外连接的区别及使用方式

一、交叉连接、内连接、外连接的区别 交叉连接又叫’笛卡尔积’&#xff0c;它是指不使用任何条件&#xff0c;直接将一个表的所有记录和另一个表中的所有记录一一匹配。内连接 则是只有条件的交叉连接&#xff0c;根据某个条件筛选出符合条件的记录&#xff0c;不符合条件的记…

内连接与外连接区别

内连接&#xff1a;指连接结果仅包含符合连接条件的行&#xff0c;参与连接的两个表都应该符合连接条件。 外连接&#xff1a;连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。 左外连接&#xff1a;左边表数据行全部保留…

mysql 内连接、自然连接、外连接的区别

数据库中的内连接、自然连接、外连接 注意&#xff1a;mysql不支持全外连接&#xff0c;using和on的区别在于需要连接的两个表的属性名相同的时候使用using和on效果一样&#xff0c;而属性名不同的时候必须使用on 数据库中的连接join分为内连接、自然连接、外连接&#xff0c…

mysql 自然连接、内连接、外连接的区别

数据库中的连接join分为内连接、自然连接、外连接&#xff0c;外连接又分为左外连接、右外连接、全外连接(注意&#xff1a;mysql不支持全外连接) 首先&#xff0c;我们先来建两张表&#xff0c;第一张表命名为kemu&#xff0c;第二张表命名为score&#xff1a; 一、left join…

内连接与外连接的区别

有两个表A和表B。表A结构如下&#xff1a;Aid&#xff1a;int&#xff1b;标识种子&#xff0c;主键&#xff0c;自增IDAname&#xff1a;varchar数据情况&#xff0c;即用select * from A出来的记录情况如下图1所示&#xff1a;图1:A表数据表B结构如下&#xff1a;Bid&#xf…

内连接、左外连接与右外连接的区别及作用介绍

SQL语句当中比较难的部分就有今天要给朋友们分享的这个&#xff0c;inner join, left join 和 right join他们三个的作用以及区别是什么。 顺便也会把交叉连接一起分享了。 上面会分享一些基本的语法与使用&#xff0c;下方会详细介绍 1&#xff09;交叉连接&#xff0c;又称笛…

图解数据库左连接、右连接、内连接、外连接、全连接的区别

数据库连表方式 内连接 &#xff1a;inner 、inner join外连接 &#xff1a;outer join 左外连接 &#xff1a;left outer join左连接 &#xff1a;left join右外连接 right outer join右连接&#xff1a; right join 全连接 full join 、union 准备 现在有2张表&#xff0c…

内链接和外连接的区别

内连接&#xff0c;也被称为自然连接&#xff0c;只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了两个表中所有相匹配的数据&#xff0c;舍弃了不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配的所有行&#xff0c;所以内连接可能会造成信息的丢…

数据库的内连接和外连接的区别

内连接&#xff1a;指连接结果仅包含符合连接条件的行&#xff0c;参与连接的两个表都应该符合连接条件。 外连接&#xff1a;连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。 左外连接&#xff1a;左边表数据行全部保留…

内连接和外连接区别

在之前&#xff0c;我对MSSQL中的内连接和外连接所得出的数据集不是很清楚。这几天重新温习了一下SQL的书本&#xff0c;现在的思路应该是很清楚了&#xff0c;现在把自己的理解发出来给大家温习下。希望和我一样对SQL的连接语句不太理解的朋友能够有所帮助。&#xff08;发这么…

数据库中的内连接、自然连接、和外连接的区别

数据中的连接join分为内连接、自然连接、外连接&#xff0c;外连接又分为左外连接、右外连接、全外连接 当然&#xff0c;这些分类都是在连接的基础上&#xff0c;是从两个表中记录的笛卡尔积中选取满足连接的记录。笛卡尔积简单的说就是一个表里的记录要分别和另外一个表的记…

左右连接和内连接的区别

首先&#xff0c;我这有两个表&#xff0c;里面的数据去这样的&#xff1a; 表和数据准备好了&#xff0c;接下来进行操作&#xff1a; &#xff08;1&#xff09;先说左连接查询&#xff1a; 左连接&#xff1a;在 LEFT JOIN 左边的表里面数据全被全部查出来&#xff0c;右边的…

内连接和外连接

内连接和外连接都是表的连接方式&#xff08;将两张表连接起来&#xff09; 内连接inner join 外连接&#xff1a;左连接 left join&#xff0c;右连接 right join 1.笛卡尔积 表一和表二做笛卡尔积&#xff0c;就是将表一的每一行和表二的每一行进行拼接 所有的这些连接…

数据库-内连接与外连接的区别(举例说明)

内连接&#xff0c;也被称为自然连接&#xff0c;只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了两个表中所有相匹配的数据&#xff0c;舍弃了不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配的所有行&#xff0c;所以内连接可能会造成信息的丢…

内连接与外链接的区别

我们要实习了&#xff0c;实习面试过了&#xff0c;但是由于考试原因经理让我在学校巩固一些SQL知识。于是我就开始了&#xff0c;做题之旅&#xff0c;一天做几个巩固一下&#xff0c;好久没做了&#xff0c;刚做就来问题了。外链接与内连接我居然不知道他们之间的原理&#x…

内连接和外连接的区别--举例

内连接是保证两个表中所有行都满足连接条件&#xff0c;而外连接不仅包含符合连接条件的行&#xff0c;还包含左表、右表或两个边接表中的所有数据行。 内连接&#xff1a;指连接结果仅包含符合连接条件的行&#xff0c;参与连接的两个表都应该符合连接条件。 外连接&#xf…