目次
Methods Used
使用的方法
语法
算法
方法一:使用substring()
Example
示例
输出
方法二:函数
结论
ホームページ バックエンド開発 C++ 任意の区切り文字のペアの間の部分文字列を抽出します

任意の区切り文字のペアの間の部分文字列を抽出します

Aug 26, 2023 pm 02:21 PM
デリミタ 部分文字列 抽出する

任意の区切り文字のペアの間の部分文字列を抽出します

分隔符是将字符串与其他字符分开的字符,例如在我们日常阅读活动中的句子中,我们通过空格分隔出不同的单词。在数学和正则表达式中,我们使用()括号作为主要的分隔符。

子字符串及其操作的概念在编程中非常重要,特别是在用于编写编译器和汇编器的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 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

iPhoneでRARファイルを解凍する方法 iPhoneでRARファイルを解凍する方法 Jul 12, 2023 pm 07:53 PM

多くの場合、非常に大きなファイルは、デバイス間、特にスマートフォンなどの間で共有することが困難です。したがって、これらのファイルはまず RAR ファイルにアーカイブ/圧縮されてから、共有するために別のデバイスに送信されます。しかし問題は、RAR ファイルを iPhone で抽出するのが簡単ではないことです。 zip ファイルを解凍するには、1 回タップするだけです。 iPhoneでRARファイルを解凍するプロセスを知っている人は多くないため、初心者にとっては手順が混乱する可能性があります。これは、iPhone のショートカットと呼ばれるデフォルトのアプリを使用して行うことができます。ここでは、ショートカットアプリを使用してiPhoneでRARファイルを抽出する方法をステップバイステップで説明します。 iPhone で RAR ファイルを抽出する方法 ステップ 1: まず、

MySQL で LOCATE 関数を使用して文字列内の部分文字列の位置を見つける方法 MySQL で LOCATE 関数を使用して文字列内の部分文字列の位置を見つける方法 Jul 25, 2023 am 09:45 AM

MySQL で LOCATE 関数を使用して文字列内の部分文字列の位置を見つける方法 MySQL には、文字列の処理に使用できる関数が多数あります。中でも LOCATE 関数は、文字列内の部分文字列の位置を見つけるのに使用できる非常に便利な関数です。 LOCATE 関数の構文は次のとおりです。 LOCATE(substring,string,[position]) ここで、substring は検索する部分文字列、string は検索する部分文字列です。

iPhoneで数値形式を変更する方法 iPhoneで数値形式を変更する方法 Apr 13, 2023 pm 06:16 PM

iOS 16 で選択できる数値形式 iOS 16.4 (ベータ 2) への変更により、iPhone で 3 つの異なる数値形式から選択できるようになりました。これらの形式では、数値の千桁を区切る記号または小数点として、スペース、カンマ、ピリオドが使用されます。小数点は、値の整数部分と小数部分を区切るために使用される文字で、通常はピリオド (.) またはコンマ (,) によって割り当てられます。千の区切り記号は、複数桁の数値を 3 つのグループに分けるために使用され、通常はピリオド (.)、カンマ (,)、またはスペース () で指定されます。最新バージョンの iOS では、iPhone の優先オプションとして次の数値形式のいずれかを適用できます: 1、23

Java で部分文字列の出現数を再帰的にカウントする Java で部分文字列の出現数を再帰的にカウントする Sep 17, 2023 pm 07:49 PM

2 つの文字列 str_1 と str_2 を指定します。目的は、再帰的プロシージャを使用して、文字列 str1 内の部分文字列 str2 の出現数をカウントすることです。再帰関数は、その定義内で自分自身を呼び出す関数です。 str1 が「Iknowthatyouknowthatiknow」、str2 が「know」の場合、出現回数は -3 になります。例を通して理解しましょう。たとえば、入力 str1="TPisTPareTPamTP"、str2="TP"; 出力 Countofoccurrencesofasubstringrecursi

strtok_r() 関数は C 言語の関数であり、その機能は文字列を一連の部分文字列に分割することです。 strtok_r() 関数は C 言語の関数であり、その機能は文字列を一連の部分文字列に分割することです。 Aug 26, 2023 am 09:45 AM

この関数は strtok() 関数に似ています。唯一の主な違いは、リエントラント関数と呼ばれる _r です。リエントラント関数は、実行中に中断できる関数です。このタイプの関数は、実行を再開するために使用できます。したがって、リエントラント関数はスレッドセーフです。つまり、損傷を引き起こすことなくスレッドによって安全に中断できます。 strtok_r() 関数には、context と呼ばれる追加のパラメータがあります。このようにして、機能を正しい場所に復元できます。 strtok_r() 関数の構文は次のとおりです。 #include<string.h>char*strtok_r(char*string,constchar*limiter,char**

Python を使用して画像内の特定の領域を抽出する方法 Python を使用して画像内の特定の領域を抽出する方法 Aug 19, 2023 pm 06:54 PM

Python を使用して写真内の特定の領域を抽出する方法 はじめに: デジタル画像処理では、特定の領域を抽出するのが一般的なタスクです。 Python は強力なプログラミング言語として、画像データを処理するためのさまざまなライブラリとツールを提供します。この記事では、Python と OpenCV ライブラリを使用して画像内の特定の領域を抽出する方法をコード例とともに紹介します。必要なライブラリをインストールする 始める前に、OpenCV ライブラリをインストールする必要があります。次のコマンドを使用してインストールできます: pipinstallopen

Windows 11でファイルを解凍する方法 Windows 11でファイルを解凍する方法 Oct 11, 2023 pm 09:09 PM

Windows 11 でファイルを解凍する方法がわからない場合、特定のソフトウェアをインストールできない場合や、他の人からアーカイブ形式で送信されたファイルを表示できない場合があります。このプロセスは非常に簡単に実行できます。今日のガイドでは、Windows 11 でこれを実行する最適な方法を説明します。 Windows 11 でファイルを解凍するにはどうすればよいですか? 1. コンテキスト メニューを使用して PC 上で zip ファイルを見つけ、右クリックします。次に「すべて抽出」を選択します。解凍先を選択し、「解凍」ボタンをクリックします。 Windows がファイルを抽出するまで待ちます。 2. サードパーティのツールを使用して WinZip をダウンロードし、インストールします。解凍したいzipファイルをダブルクリックします。次に、「解凍先」をクリックして、宛先フォルダーを選択します。 3.

Oracleデータベース内の重複データを1つだけ抽出するにはどうすればよいですか? Oracleデータベース内の重複データを1つだけ抽出するにはどうすればよいですか? Mar 09, 2024 am 09:03 AM

Oracleデータベース内の重複データを1つだけ抽出するにはどうすればよいですか?日々のデータベース運用では、重複したデータを抽出する必要がある状況に遭遇することがよくあります。すべての重複データをリストするのではなく、重複データの 1 つを見つけたい場合があります。 Oracle データベースでは、いくつかの SQL ステートメントを利用してこの目的を達成できます。次に、Oracleデータベースから重複データを1つだけ抽出する方法と具体的なコード例を紹介します。 1. ROWID関数を使用する ROWIDはOraです

See all articles