strsep函数用法

1. 位置:在kernel/lib/string.c中,头文件<linux/string.h>中

2. 函数功能:破坏性分割字符串,返回分割前一部分,后一部分保存在原字符中

3. 函数原型:char * strsep(char **,const char *);

/**
 * strsep - Split a string into tokens
 * @s: The string to be searched
 * @ct: The characters to search for
 *
 * strsep() updates @s to point after the token, ready for the next call.
 *
 * It returns empty tokens, too, behaving exactly like the libc function
 * of that name. In fact, it was stolen from glibc2 and de-fancy-fied.
 * Same semantics, slimmer shape. ;)
 */
char *strsep(char **s, const char *ct)
{
        char *sbegin = *s;
        char *end;
        if (sbegin == NULL)
                return NULL;
        end = strpbrk(sbegin, ct);
        if (end)
                *end++ = '\0';
        *s = end;
        return sbegin;
}
EXPORT_SYMBOL(strsep);

4. 函数用法:

int main()
{
	char s[] = "abcdefg_hijklmn_opqrst";
	char *t, *de = "_";

	while (s && s != '\0') {
		t = strsep(&s, de);
		printk("%s\n", t);
	}
}

5. 输出结果:
abcdefg
hijklmn
opqrst

6. 到这里可以看到strsep返回的是分割后的第一部分字符串,保存在t里面, s保存分割后剩下的部分

PS: 当s里面没有分隔符时,t保存的是整个字符串,s保存的是'\0'

以上,如有不对,欢迎指正!

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
strsep函数是一个用于分隔字符串的函数,通过指定分隔符将字符串拆分成多个子字符串。该函数用法可以参考以下示例代码: int main() { char s[] = "abcdefg_hijklmn_opqrst"; char *t, *delim = "_"; while (s && *s != '\0') { t = strsep(&s, delim); printf("%s\n", t); } } 上述代码中,首先定义了一个字符串s和一个分隔符delim。然后,通过循环使用strsep函数将字符串s按照分隔符delim进行分割,每次将分割后的子字符串赋值给变量t,并打印输出。最终,将得到如下输出: abcdefg hijklmn opqrst 在使用strsep函数时,需要注意以下几点: 1. strsep函数的第一个参数是一个指向指针的指针,指向要被分割的字符串(即s的地址),并且在函数执行后会更新为指向下一个待分割的子字符串的地址。 2. strsep函数的第二个参数是一个字符串,包含了所有可能的分隔符。 3. strsep函数返回一个指向分割后的子字符串的指针。 4. 当没有更多的子字符串可供分割时,strsep函数返回NULL。 综上所述,strsep函数通过指定的分隔符将字符串拆分成多个子字符串,并可通过循环遍历获取每个子字符串的值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C语言分隔字符串函数接口strsep](https://download.csdn.net/download/u011335192/44729909)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [strsep函数用法](https://blog.csdn.net/qq_26848623/article/details/119819728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值