【C言語12】文字列関数(strlen、strcmp、strcpy、strcat、strstr、strtok、strerror)

画像の説明を追加してください

ライブラリ関数(ライブラリ関数)は、他の人が使用できるように関数をライブラリに置く方法です。その方法は、一般的に使用されるいくつかの関数を、さまざまな人々が呼び出せるようにファイルにコンパイルすることです。呼び出すときは、 #include<> を使用して、ファイルがある場所にファイル名を追加するだけです。通常は lib ファイルに配置されます。
一般に、コンパイラが提供する、Cソースプログラム中で呼び出すことができる関数のことを指します。C言語規格で規定されているライブラリ関数とコンパイラ独自のライブラリ関数に分けられます。
今日は文字列関数を紹介します。

1. 文字列関数

1.1strlen (文字列の長さを求める)

strlen関数は通常、文字列の長さを計算するために使用されますが、初期化された文字列に '\0' がない場合、計算された長さはランダムな値になることに注意してください。
コードの詳細:

int main()
{
    
    
	char arr[] = "hello world";
	//strlen函数的参数是字符串的首地址,
	//同时计算的长度需要保存在整型变量中;
	int len = strlen(arr);
	printf("%d", len);
	return 0;
}

演算結果
ここに画像の説明を挿入

1.2 strcmp (文字列の比較)

strcmp関数は通常文字列の比較に使用され、文字のASCIIコード値を比較します。文字列のパラメータは
strcmp(str1 - 比較される最初の文字列、str2 - 比較される 2 番目の文字列) です。
この関数の戻り値は次のとおりです。
戻り値が 0 より小さい場合、str1 が返されることを意味します。は str2 未満です。
戻り値が 0 より大きい場合は、str1 が str2 より大きいことを意味します。
戻り値が 0 に等しい場合は、str1 が str2 に等しいことを意味します。
strcmp 比較のプロセスは次のとおりです。 最初のアドレスが
コードを指している場合 詳細な説明

int main()
{
    
    
	char arr[] = "hello world";
	char bit[] = "hello bit";
	int size = strcmp(arr, bit);//strlen的详细参数
	if (size < 0)//判断
	{
    
    
		printf("arr<bit\n");
	}
	else if(size == 0)
	{
    
    
		printf("arr=bit\n");

	}
	else
	{
    
    
		printf("arr>bit\n");
	}

	return 0;
}

比較結果
ここに画像の説明を挿入
arr の 7 文字目「w」の ASCII コード値が bit の「b」より大きいため、
arr>bit; となります。

1.3 strcpy (文字列のコピー)

strcpy関数は通常、文字列を別の文字列にコピーするために使用されます。コピーされる文字列のスペースが十分に大きい必要があることに注意してください。そうでないと、数値オーバーフロー エラーが発生します。
詳細コード

int main()
{
    
    
	char arr[20];
	char *p = "hello csdn";
	strcpy(arr, p);//使用指针拷贝
	char str[] = "hello world";
	char arr2[20];
	strcpy(arr2, str);//使用字符串首地址拷贝
	printf("%s\n", arr);
	printf("%s\n", arr2);

	return 0;
}


strcmp に必要な関数は文字列の最初の文字へのポインタだけでよいため、ポインタを使用して文字列をコピーできることに気付きました。

ここに画像の説明を挿入

1.4 strcat (文字列の追加)

strcat関数の機能は文字列を追加することです。この関数の機能は strcpy 関数の機能に似ていますが、同じではありません。作成者の現在の学習レベルでは詳細を解釈できません。学習が完了したら、必ず
詳細なコードを入力してください

int main()
{
    
    
	char Moon[100] = "今夜月色真美";
	char wind[] = " 风也温柔";
	strcat(Moon, wind);//把wind字符串中的内容追加到Moon的词尾后
	printf("%s", Moon);
	return 0;
}

演算結果
ここに画像の説明を挿入

1.5strstr(判定部分文字列)

strstr関数の機能は、文字列に別の文字列の内容が含まれているかどうかを判断することです。見つかった場合は、サブ文字列が存在するメイン文字列内の位置を返し、サブ文字列が存在しない場合は NULL を返します。テキストの説明は少し複雑かもしれませんが、それでもコードで説明しようとします。 コードの
詳細な説明

int main()
{
    
    
	char arr[] = "hello world i live you";
	char str[] = "world";
	char *ret = strstr(arr, str);//ret接受的是arr中str字符串的起始位置
	printf("%s", ret);
	return 0;
}

実行結果
ここに画像の説明を挿入
同時に、返された特性を利用して、主文字列に部分文字列が存在するかどうかを判断することもできます。
たとえば、
ここに画像の説明を挿入
C 言語は本当に素晴らしい言語です。学べば学ぶほど、その知恵を実感できます。私たちの先祖たち。

1.6sttok (ストリングスプリット)

strtok関数の役割は次のとおりです。まず、分割する文字を含む文字のコレクションを定義します。まだコードについて話しています
コードの詳細な説明

int main()
{
    
    
	char mailbox[] = "Nancat@bi,sheng.com";//主串
	char arr[] = "@,.";//需要分割的符号集合体
	char* ret = NULL;
	for (ret = strtok(mailbox, arr); ret != NULL; ret = strtok(NULL, arr))
	{
    
    
		printf("%s\n", ret);
	}
	return 0;
}

実行結果
ここに画像の説明を挿入
メイン文字列が正常に分割されました

1.7 strerror (エラーコードを返す)

通常はstrerror関数でエラーを判定します。比較的よく使われるライブラリ関数です エラーの原因が明確にわかります とても
使いやすく、
コードも詳しく説明されています

int main()
{
    
    
	FILE* p = fopen("red.exe", "r");
	if (p == NULL)
	{
    
    
		printf("%s", strerror(errno));
	}
	return 0;
}

演算結果
ここに画像の説明を挿入

要約する

C言語には終わりがありません。私は学習の道を歩む取るに足らない通行人にすぎません。もし誰かが私のブログを読んでくれたら、もっと指導していただければ幸いです。ブログを読んで私の欠点を指摘してくれたすべての人に感謝します。

おすすめ

転載: blog.csdn.net/nanmiao666/article/details/131383967
おすすめ