linux strsep字符串分割
来源:互联网 发布:阿里云推荐码在哪里看 编辑:程序博客网 时间:2024/06/05 19:09
函数定义
#include <string.h>char *strsep(char **stringp, const char *delim);
stringp是二级指针,即目标字符串首字符地址的地址。
delim是分割符,因为是字符串格式的,函数会把字符串里的每隔字符都当做分割符号。
2. 函数调用
01
#include <string.h>
02
#include <stdio.h>
03
04
int
main(
int
argc,
char
* argv[])
05
{
06
char
buf[] =
"zhang-guang-rong,jet-li"
;
07
char
*src = strdup(buf);
08
09
char
delim[] =
"-,"
;
10
11
char
* token;
12
for
(token=strsep(&src, delim); token!=NULL; token=strsep(&src, delim)){
13
printf
(
"%s\n"
, token);
14
}
15
16
free
(src);
17
return
0;
18
}
输出:
1
zhang
2
guang
3
rong
4
jet
5
li
3. 函数解析
以上述为例,strsep以src="zhang-guang-rong,jet-li"为源字符串。
char* begin = *stringp;
找到第一个包含在delim="-,"的分割符,即zhang后面的'-'。由char *end指向它。
end指向的分隔符重写为'\0'。 # *end='\0'。
然后修改*stringp的指向为end+1,即"guang-rong,jet-li"。
函数返回begin。
01
/** Copyright (C) 1992, 93, 96, 97, 98, 99, 2004 Free Software Foundation, Inc.
02
This file is part of the GNU C Library.
03
04
The GNU C Library is free software; you can redistribute it and/or
05
modify it under the terms of the GNU Lesser General Public
06
License as published by the Free Software Foundation; either
07
version 2.1 of the License, or (at your option) any later version.
08
09
The GNU C Library is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
Lesser General Public License for more details.
13
14
You should have received a copy of the GNU Lesser General Public
15
License along with the GNU C Library; if not, write to the Free
16
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17
02111-1307 USA. */
18
19
#include <string.h>
20
21
#undef __strsep
22
#undef strsep
23
24
char
*
25
__strsep (
char
**stringp,
const
char
*delim)
26
{
27
char
*begin, *end;
28
29
begin = *stringp;
30
if
(begin == NULL)
31
return
NULL;
32
33
/** A frequent case is when the delimiter string contains only one
34
character. Here we don't need to call the expensive `strpbrk'
35
function and instead work using `strchr'. */
36
if
(delim[0] ==
'\0'
|| delim[1] ==
'\0'
)
37
{
38
char
ch = delim[0];
39
40
if
(ch ==
'\0'
)
41
end = NULL;
42
else
43
{
44
if
(*begin == ch)
45
end = begin;
46
else
if
(*begin ==
'\0'
)
47
end = NULL;
48
else
49
end =
strchr
(begin + 1, ch);
50
}
51
}
52
else
53
/** Find the end of the token. */
54
end =
strpbrk
(begin, delim);
55
56
if
(end)
57
{
58
/** Terminate the token and set *STRINGP past NUL character. */
59
*end++ =
'\0'
;
60
*stringp = end;
61
}
62
else
63
/** No more delimiters; this is the last token. */
64
*stringp = NULL;
65
66
return
begin;
67
}
68
weak_alias (__strsep, strsep)
69
strong_alias (__strsep, __strsep_g)
70
libc_hidden_def (__strsep_g)
0 0
- linux strsep字符串分割
- 字符串分割函数strsep
- 字符串分割 strsep 函数
- strsep字符串分割详解
- Linux 内核可用的字符串分割函数 strsep (String Split Function strsep in Linux Kernel)
- 字符串分割 strtok strsep strchr
- 字符串分割 strtok strtok_r strsep
- 嵌入式 字符串分割(切分):strtok()与strsep()
- 字符串分割函数---strtok和strsep函数
- 字符串分割函数StringTokenizer与strtok,strsep的比较
- 字符串分割函数strtok和strsep使用注意事项
- Linux strsep() 用法
- strsep 是将字符串截断
- C 拆分字符串(strtok,strsep)
- strsep
- strsep
- strsep
- strsep
- 把Apache Httpd 转换为系统服务
- 生命,早已千疮百孔
- Shell32获取视频信息
- C++文件读写详解(ofstream,ifstream,fstream)
- FFMPEG架构分析
- linux strsep字符串分割
- 谢谢你,不曾离开我
- mysql 中函数的混合使用
- OpenCV 通过 MFC 的 Picture Control 控件操作图像
- 美国“鼠女”放生数千老鼠 旧金山成鼠城
- Creating, detaching, re-attaching, and fixing a SUSPECT database
- 项目管理能力提升四要素
- Mfc中设置按钮不可用
- jquery 登陆窗口用户名、密码显示提示框