首页 > 编程知识 正文

linux按空格分割字符串,mysql字符串按字符分割

时间:2023-05-05 00:06:14 阅读:241776 作者:2811

wzdqz定义
#include <string.h>char *strsep(char zlddystringp, const char *delim);

    stringp是二级指针,即目标字符串首字符地址的地址。
    delim是分割符,因为是字符串格式的,wzdqz会把字符串里的每隔字符都当做分割符号。
2. wzdqz调用

01 #include <string.h> 02 #include <stdio.h> 03   04 int main(int argc, char* argvfzdhc) 05 { 06     char buffzdhc = "zhang-guang-rong,jet-li"; 07     char *src = strdup(buf); 08       09     char delimfzdhc = "-,"; 10       11     char* token; 12     for(token=strsep(&src, delim); token!=NULL; token=strsep(&src, delim)){ 13         printf("%sn", token); 14     } 15       16     free(src); 17     return 0; 18 }

输出:

1 zhang 2 guang 3 rong 4 jet 5 li

3. wzdqz解析 以上述为例,strsep以src="zhang-guang-rong,jet-li"为源字符xydgb char* begin = *stringp; 找到第一个包含在delim="-,"的分割符,即zhang后面的'-'。由char *end指向它。 end指向的分隔符重写为''。 # *end=''。
然后修改*stringp的指向为end+1,即"guang-rong,jet-li"。 wzdqz返回begin。

01 /zlddy 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 zlddystringp, const char *delim) 26 { 27   char *begin, *end; 28   29   begin = *stringp; 30   if (begin == NULL) 31     return NULL; 32   33   /zlddy 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] == '' || delim[1] == '') 37     { 38       char ch = delim[0]; 39   40       if (ch == '') 41     end = NULL; 42       else 43     { 44       if (*begin == ch) 45         end = begin; 46       else if (*begin == '') 47         end = NULL; 48       else 49         end = strchr (begin + 1, ch); 50     } 51     } 52   else 53     /zlddy Find the end of the token.  */ 54     end = strpbrk (begin, delim); 55   56   if (end) 57     { 58       /zlddy Terminate the token and set *STRINGP past NUL character.  */ 59       *end++ = ''; 60       *stringp = end; 61     } 62   else 63     /zlddy 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)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。