一般的に使用される文字列関数の概要--- 1

/ ************************************************* ************************************************** ** /
一般的に使用される文字列関数は、次のブレインマップで説明されています。string.hシリーズ関数の完全なリストについては、「C99およびC11用の新しい標準ANSICライブラリ」
/ *********を参照してください。************************************************** ***************************************** /

【画像】

strlen()関数

以下にテストフィット()関数を示します。C文字定数系列特性の使用に注意してください。

#include <stdio.h>
#include <string.h>  /*内含字符串函数原型*/
void fit(char *,unsigned int);
int main (void){
    
    
    char mesg [] = "Things should be as simple as possible,""but not simper.";
    puts(mesg);
    fit(mesg,38);
    puts(mesg);
    puts("Let' LOOk at some more of the string");
    puts(mesg+30);
    return 520;
}
void fit(char *string,unsigned int size){
    
    
    if(strlen(string)>size)
        string[size]='\0';
}

出力は次のとおりです

ここに画像の説明を挿入fit()関数は、39番目の要素のコンマを文字「\ 0」に置き換え、puts()関数は、空の文字で出力を停止し、残りの文字を無視します。
ここに画像の説明を挿入

strcat()関数

前のブレインマップでこの関数の使用法が説明されているので、コードに直接移動します

#include "stdio.h"
#include "string.h"

#define size 80

int main(){
    
    
	char flower[size]="woaini";
	char addon[50]="lala semll like older";
	strcat(flower ,addon);
	puts(flower);
	puts(addon);
	
	return 520;
} 

結果は次のようになります。
ここに画像の説明を挿入
花は変化していることがわかりますが、アドオンは変更されていません。

しかし、花の配列のサイズが十分に大きくない場合はどうなりますか?また問題はありますか?あなたがそのような懸念を持っているならば、それはあなたがもはや初心者ではないことを意味します。それでは、見下ろし続けましょう!

strncat()関数

strcat()関数は、最初の配列が2番目の文字列を保持できるかどうかを確認できません。

strncat(char *、char *、int)

3番目のパラメーターnは、n番目の文字まで2番目の文字列の内容を最初の文字列に追加することを意味します

#include "stdio.h"
#include "string.h"

#define size 80

int main(){
    
    
	char flower[size]="woaini";
	char addon[50]="lala semll like older";
	strncat(flower ,addon,10);
	puts(flower);
	puts(addon);
	
	return 520;
} 

の結果

ここに画像の説明を挿入

strcmp()関数

1.この関数は文字列の比較に使用されます

同時に、この関数は文字列のアドレスではなく、文字列の内容を比較することにも言及する価値があります。読者は自分で関数を設計するか、C標準ライブラリのstrcmp()関数を使用できます(文字列の比較用)。この関数は、数値を比較するのと同じように、比較演算子を使用して文字列を比較します。2つの文字列パラメータが同じ場合、関数は0を返します。それ以外の場合、関数はゼロ以外の値を返します。

#include "stdio.h"
#include "string.h"

#define size 80

int main(){
    
    
	char flower[size]="woaini";
	char addon[50]="woaini";
	char *a="wobuaini";
	printf("%d\n",strcmp(flower,addon));
	printf("%d\n",strcmp(flower,a));
	return 520;
} 

実装の結果は次のとおりです。
ここに画像の説明を挿入
注意深い友人が尋ねるかもしれませんが、花の配列のサイズは80文字ではありませんか?これに対する答えは、strcmp()関数が配列全体ではなく文字列のみを比較することです。これは、非常に優れています。関数。

2. strcmp()関数の戻り値

#include "stdio.h"
#include "string.h"

int main(){
    
    
	printf("strcmp(\"A\",\"A\") is");
	printf("   %d\n",strcmp("A","A"));
	
	printf("strcmp(\"A\",\"B\") is");
	printf("   %d\n",strcmp("A","B"));
	
	printf("strcmp(\"B\",\"A\") is");
	printf("   %d\n",strcmp("B","A"));
	
	return 520;
} 

ここに画像の説明を挿入
上記の状況は、文字列の比較が、出力値を決定するために2つの文字列の最初の異なる文字のASCIIコードに基づいていることを示しています。3つの状況があります。

  • 2つの文字列は等しく、0を返します
  • 最初の文字列がアルファベットの2番目の文字列の前にある場合は、負の数を返します
  • それ以外の場合は正の数を返します

strncmp()関数

strncmp()関数は、その名前が示すように、strcmp関数の拡張です。strcmp()関数は、別の文字が見つかるまで文字列内の文字を比較します。このプロセスは、文字列の最後まで続く場合があります。strncmp()関数が2つの文字列を比較する場合、異なる文字を比較するか、3番目のパラメーターで指定された文字数のみを比較できます。たとえば、「astro」で始まる文字列を検索するには、これらの5文字のみを検索するように関数を制限できます。

操作はstrcmp()関数に似ているため、実際の戦闘は開始されません。

strcpy()関数とstrncpy()関数

strcpy()関数の使用は、文字列の文字列全体のコピーでのみ実現できます。

1. strcpy()の他の属性

  • strcpy()の戻り値の型はchar *で、最初の文字のアドレスである最初のパラメーターの値を返します。
  • 最初のパラメーターは必ずしも配列の先頭を指しているとは限りません。この属性を使用して、配列の一部をコピーできます。
#include "stdio.h"
#include "string.h"
#define words "beast"
#define size 40

int main(){
    
    
	
	const char *orig=words;
	char copy[size]="be the best that you can";
	char *ps;
	
	puts(orig);
	puts(copy);
	ps=strcpy(copy+7,orig);
	puts(copy);
	puts(ps);
	
	return 520;
}

出力結果
ここに画像の説明を挿入

ご覧のとおり、psポインターが指す値はbeastです。これは、最初のパラメーターのアドレスであるcopy +7です。もう手に入れましたか?わかりにくい場合は下の写真をご覧ください

ここに画像の説明を挿入2.より慎重な選択:strncpy()

strcpy()とstrcat()の両方に同じ問題があり、どちらもターゲットスペースが文字列のコピーを保持できるかどうかを確認できません。したがって、strncpy()を使用して文字列をコピーする方が安全です。同様に、関数の3番目のパラメーターは、コピーできる最大文字数を指定します。

補足:sprintf()関数

まず、sprintf()関数はstring.hではなくstdio.hで宣言されていることに注意してください。
次に、コードの文字列を使用して、彼の使用法を説明します。

#include "stdio.h"
#include "string.h"
#define words "beast"
#define size 40

int main(){
    
    
	char formal[2*size+10];
	const char *orig=words;
	char copy[size]="be the best that you can";
	sprintf(formal,"  %-19s:  %6.2f\n",orig,copy);
	puts(formal);
	
	return 520;
}

の結果

ここに画像の説明を挿入
役に立ったと感じたら、親指を立ててコメントを残してから出発してください。ありがとうございます。

おすすめ

転載: blog.csdn.net/qq_42392049/article/details/112667648