提取在任意一对分隔符之间的子字符串
分隔符是将字符串与其他字符分开的字符,例如在我们日常阅读活动中的句子中,我们通过空格分隔出不同的单词。在数学和正则表达式中,我们使用()括号作为主要的分隔符。
子字符串及其操作的概念在编程中非常重要,特别是在用于编写编译器和汇编器的C语言中。在字符串中识别定界符,并将起始定界符后的字符复制到另一个变量中,直到结束定界符。
== 和 != 运算符可用于比较字符串中的字符和用户指定的分隔符字符。
使用scanf()函数从用户接受一个字符串,所以空格不能作为字符串的一部分。如果使用puts()或其他函数或方法,可能会得到一个高级版本。
该程序使用数组和字符串处理的基本概念,而不使用头文件中可用的任何字符串函数。可以使用字符串比较、字符串复制函数,但作为简单逻辑的练习,该程序是使用非常基本的逻辑完成的。
Methods Used
的中文翻译为:使用的方法
方法一:使用 substring()
方法2:使用函数
两种方法各有其优点。方法1是一种直接的解决方案,帮助用户理解字符串操作的过程,而方法2通过使用函数促进更好的软件设计原则和可维护性。
语法
在 C 编程语言中提取任意一对分隔符之间的子字符串是一项常见的编程任务。提取子串的方法可以根据具体的问题要求和约束而变化。尽管如此,一种广泛使用的技术是利用 C 标准库中的 strtok() 函数。该函数用于根据指定的分隔符将字符串分解为一系列标记。该函数将原始字符串和分隔符作为输入,并返回指向字符串中找到的第一个标记的指针。要提取所有子字符串,可以使用空指针作为第一个参数重复调用该函数以获得后续标记。字符串的结尾由 strtok() 函数返回的空指针指示。
char *strtok(char *str, const char *delim);
算法
步骤 1 - 声明 str1,str2,delim1,delim2 初始化为 null。
第 2 步 - 声明整型变量 len、n、I、subs
步骤 3 - 从控制台接收 str1、delim1 和 delim2
第 4 步 - 检查长度并将其存储在 len
步骤 5 - 当 n<输入字符串长度 len 时,检查 str1[n] 是否等于 delim1
第 6 步 - 如果是,则 subs=n,打破循环
步骤 7 − 当 str1[subs] != delim2 时,使 n=0
第 8 步 - 将 delim1 后的 str1 复制到 str2,str2[n] = str1[subs],递增 n 和 subs
步骤 9 - 打印 str2,其中输入字符串减号 ()。
方法一:使用substring()
对于字符串的简单逐步数组操作的实现具有几个优点。它直观且易于理解,这对于初学者或正在学习编程的人来说是有益的。这种方法允许用户看到程序用于操作字符串的确切过程。然而,正如前面提到的,这种方法有一些限制,例如不接受带有空格的字符串,并且将长度限制为20个字符。使用gets方法,您可以克服字符串大小的限制,但值得注意的是,由于潜在的缓冲区溢出和安全风险,gets方法已被弃用。
Example
的中文翻译为:示例
这段代码构成了一个软件,它基于两个分隔符提取字符串的一部分。第一个分隔符指定了子字符串的开始,第二个分隔符定义了其结束。输入字符串存储在str1变量中,两个分隔符定义为delim1和delim2变量。提取的子字符串保存在str2变量中。程序首先使用第一个分隔符识别子字符串的起始位置,然后通过计算从起始位置到第二个分隔符定义的结束位置的字符数量来计算其长度。然后调用Substring函数从原始字符串中提取子字符串并将其存储在str2变量中。提取的子字符串然后显示在屏幕上。
#include <stdio.h> #include <string.h> void Substring(char *str2, const char *str1, int start, int n) { strncpy(str2, str1 + start, n); } int main() { // Predefined input values char str1[] = "Hello[world]!"; char delim1 = '['; char delim2 = ']'; char str2[100]; int len1 = strlen(str1); int start, subs, n = 0; // Getting the position of substring based on delimiter while (n < len1) { if (str1[n] == delim1) { subs = n; break; } n++; } start = n; // Getting the length of substring if (str1[subs] == delim1) { n = 0; subs++; while (str1[subs] != delim2) { subs++; n++; } Substring(str2, str1, start + 1, n); } // Adding null character at the end str2[n] = '\0'; printf("<span>\</span>nSub string is %s", str2); return 0; }
输出
Sub string is world
方法二:函数
使用函数来实现程序可以提供更模块化和有组织的解决方案。它将代码分解为较小、可重用的部分,可以独立进行测试和调试。这种方法促进了更好的软件设计原则和代码可读性。通过创建函数,您还可以轻松扩展程序的功能并提高其可维护性。
Example
的中文翻译为:示例
此代码构成了一个 C 软件,用于提取定义的字符串的一部分。该字符串被声明为字符数组,并且分隔符在主函数中预先指定。 Getpos 函数用于确定字符串中第一个分隔符 (delim1) 的位置。 Copystr 函数用于将两个分隔符(delim1 和 delim2)之间的字符复制到新字符串中。原始字符串的长度是使用 string.h 库中的 strlen 函数计算的。然后使用 printf 函数将子字符串显示在屏幕上。
#include <stdio.h> #include <string.h> void Getpos(char *str1, int len1, char delim1, int *subs) { int n = 0; while (n < len1) { if (str1[n] == delim1) { *subs = n; break; } n++; } } void Copystr(char *str1, char *str2, char delim1, char delim2, int subs) { if (str1[subs] == delim1) { int n = 0; subs++; while (str1[subs] != delim2) { str2[n] = str1[subs]; subs++; n++; } } } int main() { // Predefined input values char str1[] = "Hello[world]!"; char delim1 = '['; char delim2 = ']'; char str2[100]; int len1, subs; len1 = strlen(str1); Getpos(str1, len1, delim1, &subs); Copystr(str1, str2, delim1, delim2, subs); str2[strlen(str2)] = '\0'; printf("<span>\</span>nSub string is %s", str2); return 0; }
输出
Sub string is world
结论
C 中的字符串以字符的形式存储在内存中,字符串中的每个字符或字母都可以单独访问和处理。字符串的数组操作可以轻松地对字符串执行各种操作,如连接、反转,查找回文等等。这种灵活性使其在文件操作和最小内存使用方面非常有用。
以上是提取在任意一对分隔符之间的子字符串的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

很多时候,非常大的文件很难在设备之间共享,尤其是智能手机等。因此,这些文件首先被存档/压缩成RAR文件,然后发送到另一个设备进行共享。但问题是RAR文件不容易在iPhone上提取。要提取zip文件,只需轻点一下即可。没有多少人知道在iPhone上提取RAR文件的过程,对于初学者来说,这些步骤可能会令人困惑。可以使用iPhone上称为快捷方式的默认应用程序来完成此操作。我们在这里逐步解释了如何使用快捷方式应用程序在iPhone上提取任何RAR文件。如何在iPhone上提取RAR文件步骤1:首先,您

给定两个字符串str_1和str_2。目标是使用递归过程计算字符串str1中子字符串str2的出现次数。递归函数是在其定义中调用自身的函数。如果str1是"Iknowthatyouknowthatiknow",str2是"know"出现次数为-3让我们通过示例来理解。例如输入str1="TPisTPareTPamTP",str2="TP";输出Countofoccurrencesofasubstringrecursi

MySQL中如何使用LOCATE函数查找子字符串在字符串中的位置在MySQL中,有许多函数可以用来处理字符串。其中,LOCATE函数是一种非常有用的函数,可以用来查找子字符串在字符串中的位置。LOCATE函数的语法如下:LOCATE(substring,string,[position])其中,substring为要查找的子字符串,string为要在其中

您可以在 iOS 16 上选择哪些数字格式随着对 iOS 16.4 (beta 2) 的更改,您可以为您的 iPhone 选择三种不同的数字格式。这些格式使用空格、逗号和句点作为分隔数字中千位的符号或作为小数点。小数点是用于将值的整数部分与其小数部分分开的字符,通常由句点 (.) 或逗号 (,) 分配。千位分隔符用于将多位数的数字分成三组,通常由句点 (.)、逗号 (,) 或空格 ( ) 指定。 在最新版本的 iOS 上,您将能够应用以下任何一种数字格式作为您 iPhone 的首选选项:1,23

该函数与strtok()函数类似。唯一的关键区别是_r,它被称为可重入函数。可重入函数是在执行过程中可以被中断的函数。这种类型的函数可用于恢复执行。因此,可重入函数是线程安全的,这意味着它们可以安全地被线程中断,而不会造成任何损害。strtok_r()函数有一个称为上下文的额外参数。这样函数就可以在正确的位置恢复。strtok_r()函数的语法如下:#include<string.h>char*strtok_r(char*string,constchar*limiter,char**

如果您不知道如何在Windows11上解压缩文件,则可能无法安装某些软件或查看其他人以存档格式发送给您的文件。此过程执行起来非常简单,在今天的指南中,我们将向您展示在Windows11上执行此操作的最佳方法。如何在Windows11中解压缩文件?1.使用上下文菜单在您的PC上找到zip文件并右键单击它。接下来,选择“全部提取”。选择提取位置,然后单击“提取”按钮。等待Windows提取文件。2.使用第三方工具下载WinZip并安装它。双击要提取的zip文件。现在单击解压缩到并选择目标文件夹。3.

如何使用Python提取图片中的特定区域引言:在数字图像处理中,提取特定区域是一项常见的任务。Python作为一种功能强大的编程语言,提供了多种库和工具来处理图像数据。本文将介绍如何使用Python和OpenCV库来提取图片中的特定区域,并附带代码示例。安装所需库在开始之前,我们需要安装OpenCV库。可以使用以下命令来安装:pipinstallopen

在C编程语言中,通常情况下,特殊符号具有特殊的含义,不能用于其他目的。在C编程中使用的一些特殊符号如下−[](){},;*=#让我们了解它们的定义,如下所示:方括号[]-方括号的开闭用于数组元素引用,表示单个和多维下标。圆括号()-这些特殊符号用于函数调用和函数参数。花括号{}-花括号的开闭表示包含多个可执行语句的代码块的开始和结束。逗号(,)-用于分隔多个语句,比如函数调用中的参数分隔。冒号(:)-这是一个运算符,实际上调用了一个叫做初始化列表的东西。分号(;)-它被称为语
