C语言字符串分割的两种方式

一、利用strtok()函数进行分割
函数头文件#iinclude<string.h>
函数原型:char *strtok(char s[], const char *delim);s[]是原字符串,delim为分隔符
返回:字符串拆分后的首地址。 “拆分”:将分割字符用 '\0’替换
特性:
1)strtok拆分字符串是直接在 原串 上操作,所以要求参1必须,可读可写(char *str = “www.baidu.com” 不行!!!)

2)第一次拆分,参1 传待拆分的原串。 第1+ 次拆分时,参1传 NULL.

void test01()
{    //1.使用strtok()实现分割
	char str[] = "hello,world hello";
	char* str1 = strtok(str, " ,");
	printf("%s\n", str1);
	while (str1 != NULL)
	{
		 
         str1 = strtok(NULL, " ,");
         if(NULL == str1)
         break;
		 printf("%s\n", str1);
	}
	 
	
}

二、利用正则表达式实现。

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

void test02()
{
	//2.使用sscanf()实现固定格式的读取。
	//函数原型:int sscanf (char *str, char * format [, argument, ...]);
	//与scanf()区别,scanf的输入是在键盘输入的,而sscanf()是在用户定义的缓冲区获取的固定格式的数据。
	char str[] = "894529306@qq.com";
	int b;
	char c[10];
	int n=sscanf(str, "%d@%[a-z]", &b, c);
	printf("用户名%d\n", b);
	printf("邮箱类型%s\n", c);
	printf("返回值%d\n", n);//返回值为成功读取的参数个数,失败为-1
}

希望大家有所指教,共同进步!!

  • 28
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
可以使用C语言中的strtok函数来实现字符串的切割。具体实现方法如下: ```c #include <stdio.h> #include <string.h> int main() { char str[] = "apple,banana,orange"; char *token; char *delim = ","; char *str_arr[10]; // 最多切割出10个子字符串 // 第一次调用strtok函数时需要传入待切割的字符串, // 之后每次调用都应该传入NULL作为第一个参数。 token = strtok(str, delim); int i = 0; while (token != NULL) { str_arr[i++] = token; token = strtok(NULL, delim); } // 输出切割得到的字符串数组 for (int j = 0; j < i; j++) { printf("%s\n", str_arr[j]); } return 0; } ``` 在上面的代码中,我们首先定义了一个待切割的字符串`str`,然后定义了一个分隔符`delim`,这里我们使用了逗号`,`作为分隔符。 接着我们定义了一个字符串指针数组`str_arr`,用于存放切割得到的子字符串。这里我们假设最多能切割出10个子字符串,因此数组大小为10。 接下来我们调用了`strtok`函数,第一次传入待切割的字符串和分隔符,返回值是指向第一个子字符串的指针。之后每次调用`strtok`函数都应该传入NULL作为第一个参数,函数会接着上一次的位置继续切割字符串。 在while循环中,我们不断调用`strtok`函数,将切割得到的子字符串存放在字符串指针数组`str_arr`中,并且使用计数器`i`记录子字符串的个数。 最后我们遍历字符串指针数组,依次输出每个子字符串
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值