最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

世界即时看!C语言字符串拆分的两种方式strtok和正则表达式

来源:博客园


【资料图】

一、利用strtok()函数进行分割函数头文件#include函数原型:char *strtok(char s[], const char *delim); s[]是原字符串,delim为分隔符函数返回被分解的第一个子字符串,若无可检索的字符串,则返回空指针特性:1)strtok拆分字符串是直接在原串上操作,所以要求参1必须可读可写2)第一次拆分,参1传待拆分的原串。第1+次拆分时,参1传NULL

#include#include int main(){    char str[] = "abc.def.12";    char *index = NULL;    char id[128] = {0};    index = strtok(str, ".");    while (index != NULL)    {        strncpy(id, index, sizeof(index));        index = strtok(NULL, ".");    }    printf("%s\n", id);}

编译输出:

test# gcc 1.c -o outtest# ./out12

二、利用正则表达式实现函数原型:int sscanf (char *str, char * format [, argument, …]);与scanf()区别,scanf的输入是在键盘输入的,而sscanf()是在用户定义的缓冲区获取的固定格式的数据。返回值:读取成功的参数个数,失败是-1

#includeint main(){    char str[] = "123@qq.com";    int b;    char c[10];    char d[10];    int n=sscanf(str, "%d@%[a-z].%[a-z]", &b, c, d);    printf("用户名%d\n", b);    printf("邮箱类型%s\n", c);    printf("第三部分%s\n", d);    printf("返回值%d\n", n); //读取成功的参数个数}

编译输出:

test# gcc 2.c -o outtest# ./out用户名123邮箱类型qq第三部分com返回值3

转自:https://blog.csdn.net/qq_45313714/article/details/116044440

参考:字符分割函数strtok

关键词: 正则表达式 参数个数 固定格式