Linux C下实现字符串的分割提取

今天在写linux socket编程的时候,遇见一个字符串的分割提取问题,像python这样的脚本语言能直接利用现成的split() 函数直接实现,然后自己找了下,原来linux 下的C语言也可用strtok() 函数来实现:

函数原型:

char *strtok(char s[], const char *delim);

 功能:

    分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串

     例如:strtok("abc,def,ghi",","),最后可以分割成为abc def ghi.尤其在点分十进制的IP中提取应用较多。

     分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。

代码例子:

/*************************************************************************
	> File Name: strtok.c
	> Author: xiao5
	> Mail: [email protected]
	> Created Time: 2015年12月29日 星期二 15时54分17秒
 ************************************************************************/

#include<stdio.h>
#include <string.h>
//程序功能用"&"作为分隔符,结果输出“今天是”、“2015年”、“6月”、“8日”、“星期一” 
int main()
{
    char tmp[40];
    char str[] = "今天是&2015年&6月&8日&星期一";
    char str0[] = "&";
    char *result = NULL;
    result = strtok( str, str0 );
    printf("%s\n",result);
    while( result != NULL ) {
        // printf("%s ", result);
        strcpy(tmp, result);
        printf("%s^",tmp);
        result = strtok(NULL, str0);
    }

    return 0;
}

 执行结果为:

 

 

猜你喜欢

转载自zjuerlemon.iteye.com/blog/2267451