/*
* 字符串分解函数。注意strtok比较复杂。要妥善运用!
* 也可以不用strtok函数,但要实现字符串靠字符串分割比较困难!
* 注意str指向的空间必须是可读可写的(如数组或动态分配的空间),
* 不能为字符串常量的指针,因为strtok改变了其中的内容。
*/
#include <stdio.h>
#include <string.h>
/*
* 功能:将str中的字符串按照elemone,elemtwo分割,
* 注意分隔符的顺序从后至前,原因在strtok上
* strtok会改变str中的数据!
* 然后将elemone前面的字符串再按elemtwo分割,
* 将分割后结果分别存放到相应字符数组中。
* 使用n防止缓冲区溢出
*/
void
str_strip(char *str, char *elemone, char *elemtwo,
char *bufstart, char *bufmid, char *bufend, int n)
{
char *buf;
buf = strtok(str, elemone); //buf中保存12-17, str中也保存的是12-17了
//printf("1. Now buf: %s, str:%s\n", buf, str);
strncpy(bufend, str = strtok(NULL, elemone), n); //bufend中保存了2
//str = 没有太多作用,主要是这个字符串会改变str中的字符,这样写以后str中的值是elemone后面的字符串,比较符合逻辑
//printf("2. Now buf: %s, str:%s\n", buf, str);
strncpy(bufstart, strtok(buf, elemtwo), n); //bufstart中保存了12
//printf("3. Now buf: %s\n", buf);
strncpy(bufmid, strtok(NULL, elemtwo), n); //bufend中保存了17
//printf("4. Now buf: %s\n", buf);
/*综合上述:strtok的功能:以arg 2为分隔符,
第一次取出前半部分,返回前半部分字符的地址,并将分隔符写'\0'即ASCII码0;
第二次取出后半部分,返回后半部分开始字符的地址。
第二次必须传入NULL,否则无法取出后面部分,因为此时str已经是被分割后的前半部分字符串了*/
}
int main(void)
{
char str[] = "12-17/2";
char *elemone = "/";
char *elemtwo = "-";
char bufstart[3], bufmid[3], bufend[3];
printf("String:%s ", str);
str_strip(str, "/", "-", bufstart, bufmid, bufend, 3);
printf("is strop to: %s %s %s\n", bufstart, bufmid, bufend);
return 0;
}
分享到:
相关推荐
为了更好地理解这些概念,我们可以查看提供的两个文件——“截取字符串.txt”和“split分割字符串.txt”。在“截取字符串.txt”中,可能会有各种截取字符串的例子,包括不同的起始位置和结束位置,以及如何处理负数...
在本课程设计“广工数据结构课程设计字符串操作”中,我们将专注于一个特定的数据结构——字符串,并探讨如何对其进行高效的操作。字符串在编程中扮演着重要角色,无论是处理用户输入、文本分析还是数据存储,都离不...
这个标签简单明了地指出了本文讨论的核心主题——字符串分割。字符串分割是在很多编程语言中都非常基础且重要的操作之一,尤其是在处理文本数据时。 ### 部分内容解释 这部分内容看起来是一段PL/SQL代码示例,但...
注 意:存储分割后的子字符串列表的变量str_list是用动态内存分配函数malloc分配的,在使用完str_list后要及时释放其所占用的内存。 ———————————————— 版权声明:本文为CSDN博主「logan_lei」的原创...
在LabVIEW中,字符串操作是相当重要的,因为它们在数据表示、日志记录、用户界面交互等方面发挥着关键作用。格式化写入字符串通常涉及到将数据以特定的格式输出到文本文件、控制台或者用户界面上。下面,我们将详细...
在编程领域,分割字符串是一项常见的任务,特别是在处理文本数据时。这个实例014的核心是讲解如何根据指定的字符来分割一个字符串。在各种编程语言中,都有相应的函数或方法来实现这一操作。这里我们将主要探讨在...
#### split —— 分割字符串 `split()` 方法用于把一个字符串分割成字符串数组。 ```javascript var arr1 = a.split(""); // arr1 的值为 ["h", "e", "l", "l", "o"] ``` #### length —— 字符串长度 `length` ...
- `split(separator[, limit])`:根据分隔符将字符串分割成数组。 - `replace(regexp|substr, newSubstr|function)`:替换匹配到的部分。 - `trim(), trimLeft(), trimRight()`:去除字符串两侧、左侧或右侧的...
这个压缩包“华为od-华为od练习题之字符串分割.zip”显然包含了与字符串处理相关的练习题目,可能是为了考察应聘者在Python编程语言中的字符串操作能力。 【描述】描述中的“华为od_华为od练习题之字符串分割.zip”...
Java中的String类是编程中非常基础且重要的部分,它代表不可...掌握这些知识点有助于理解和优化Java中的字符串操作,提高代码质量和性能。在实际开发中,合理利用这些特性能够帮助我们编写出更高效、更易于维护的代码。
11. `str.split([sep[, maxsplit]])`: 按照指定分隔符`sep`将字符串分割成多个子串,返回子串列表。不指定`sep`时,按空格分割。 12. `str.join(iterable)`: 将可迭代对象(如列表)中的元素连接成一个字符串,每个...
这里的`reduce`方法接受两个参数:初始值(这里为空字符串`""`)和一个二元操作函数(`(a, b) -> a + "," + b`),它将每个元素与之前的累积结果合并,最终得到一个完整的字符串。 2. 使用`collect`和`Collectors....
本文将深入探讨C#中字符串的常用方法及其应用示例,特别适合初学者掌握基础的字符串操作技巧。 ### 字符串不可变性 C#中的字符串具有一个核心特性——不可变性。这意味着一旦一个字符串被创建,其内容不能被直接...
例如,对于长字符串的处理,工具可能包含分割字符串成数组的功能,便于逐个处理每个部分;在查找替换方面,工具可能支持正则表达式,使得复杂的文本查找和替换变得轻松快捷。 字符串转换是另一个核心亮点。此工具...
这通常通过将字符串分割成数组来完成,可以使用`split()`方法,该方法根据给定的分隔符(在这里是逗号)将字符串切割。例如: ```java String str = "90,56,45,38,79,85"; String[] numbersStr = str.split(","); `...
5. 分割字符串:`split()`方法按照指定的分隔符将字符串分割成字符串数组。 ```java String[] words = str1.split(" "); ``` 三、字符串与字符数组 Java中的字符串不能直接转换为字符数组,但可以使用`toCharArray...
在这个场景中,我们关注的是Objective-C中的两个关键概念:分类(Category)和字符串操作——字符串的拆分(componentsSeparatedByCharactersInSet)。下面将详细解释这两个知识点。 首先,Objective-C的分类是一种...
这个过程通常涉及到从一串预定义格式的字符串中提取信息,并将这些信息构建成一个具有层级关系的数据结构——树。在这个场景下,我们使用的编程语言是Java,它提供了丰富的库和工具来帮助我们实现这一目标。 首先,...
`strtok`函数用于将字符串分解为一系列标记,通过指定的分隔符`delim`来分割。首次调用时,`s`应指向要分解的字符串,后续调用设置`s`为`NULL`。`strtok`会修改原始字符串,所以在使用时需要注意对原始数据的保护。...
2. **使用`filter()`**:在使用`re.split()`分割字符串后,可能会产生一些空字符串(`''`)。为了去除这些不必要的元素,可以通过`filter()`函数进行过滤。 3. **使用`set()`进行去重**:`set()`是Python内置的一种...