ps:混乱しやすい知識のポイントを記録するのにこれを使うのは初めてですが、それほど洗練されていないか、小さな間違い(指摘してください)があるかもしれませんが、許してください!直接始めましょう〜
1つは、文字列の長さです
1.strlen関数
- ヘッダーファイル:string.h
- 形式:strlen(文字列アドレス)
- 戻り値:「\ 0」を除く文字列の実際の長さを返します
char str[]="01234";
printf("%d\n",strlen(str));
結果出力:5
次に、文字列のコピー
1.strcpy関数
- ヘッダーファイル:string.h
- 形式:strcpy(文字配列、文字列)
- 戻り値:最初のパラメーターの値、つまり文字のアドレス
- 注:1>文字配列は十分な大きさである必要があります
2>コピーする場合、「\ 0」は一緒にコピーされます
3>割り当てステートメントを使用して文字配列を割り当てることはできません
4>コピーされた文字列はターゲット文字列と呼ばれ、元の文字列は呼び出されますソース文字列
5>は、文字列全体または配列
Aの一部をコピーできます。
char str1[10],str2[10];
scanf("%s",str2);
strcpy(str1,str2):
B。
const char * orig="beast";
char copy[40]="Be the best that you can be.";
char *ps;
ps=strcpy(copy+7,orig);
puts(copy);
結果出力:獣になる
2.strncpy関数
- ヘッダーファイル:string.h
- 形式:strncpy(文字配列、文字列、長さ)
- 戻り値:文字配列の最初のアドレスを返します
- 注:文字配列は十分に大きくなければなりません
- 機能:文字列の最初のn文字を文字配列にコピーし、最後に「\ 0」を追加します
char str[40];
strncpy(str,"0123456789",5);
printf("%s\n",str);
結果出力:01234
3、文字列の比較
1.strcmp関数
- ヘッダーファイル:string.h
- 形式:strcmp(文字列1、文字列2)
- 比較ルール:2つの文字列を、異なる文字または「\ 0」に遭遇するまで、左から右に文字ごとに比較します(ASCIIコード)。
- 戻り値:int型整数を返します。文字列1 <文字列2の場合、負の数を返します
printf("%d\n",strcmp("apples","apple"));
printf("%d\n",strcmp("Z","a"));
結果出力:1
-12.strncmp関数
- ヘッダーファイル:string.h
- 形式:strncmp(文字列1、文字列2、長さ)
- 戻り値:int型整数を返します。文字列1 <文字列2の場合、負の数を返します
- 機能:文字列1の最初のn文字のサブストリングを文字列2の最初のn文字のサブストリングと比較します
printf("%d\n",strncmp("abcd","abcDEF",3));
printf("%d\n",strncmp("abcd","abcDEF",5));
結果出力:0 1(0より大きい)
3.strnicmp関数
- ヘッダーファイル:string.h
- 形式:strnicmp(文字列1、文字列2、長さ)
- 違い:strnicmpは大文字と小文字を区別しませんが、strcmpは大文字と小文字を区別します
printf("%d\n",strcmp("A","a"));
printf("%d\n",strnicmp("A","a",1));
結果出力:-1(0未満)0
第四に、弦の接合
1.strcat関数
- ヘッダーファイル:string.h
- 形式:strcat(文字列1、文字列2)
- 戻り値:最初のパラメーター、つまり2番目の文字列を接続した後の最初の文字列のアドレスを返します
char str[40]="wonderflower";
char str1[]="s smell like old shoes.";
strcat(str,str1);
puts(str);
結果出力:ワンダーフラワーは古い靴のようなにおいがする
2.strncat関数
- ヘッダーファイル:string.h
- 形式:strncat(文字列1、文字列2、追加される最大文字数)
char str[40]="wonderflower";
char str1[]="s smell like old shoes.";
strncat(str,str1,7);
puts(str);
結果出力:ワンダーフラワーの匂い
5、文字列の組み合わせ
1.sprintf関数
- ヘッダーファイル:stdio.h
- 形式:sprintf(ターゲット文字列のアドレス、形式文字列、および書き込まれる項目のリスト)
- 機能:複数の要素を1つの文字列に結合します
char str[40]="hello world!";
int year=2020;
char final[40];
sprintf(final, "%s %d\n",str,year);
puts(final);
結果出力:hello world!2020
6、他の文字列関数
1.strchr関数
char * strchr(const char * s、int c);
s文字列にc文字が含まれている場合、この関数はs文字列の最初の出現を指すcポインターを返します(末尾のnull文字も文字列の一部であるため。検索範囲内);文字列sにc文字が見つからない場合、関数はnullポインターを返します。
2.strpbrk function
char * strpbrk(const char * s1、const char * s2);
s1文字にs2文字列に文字が含まれている場合、関数はs1文字列の最初の位置へのポインタを返します。s1文字列にある場合s2文字列に文字が見つからない場合は、null文字が返されます。
3. strrchr関数
char *strrchr(const char * s, int c);
この関数は、s文字列のc文字の最後の位置を返します(末尾の空の文字も文字列の一部であるため、検索範囲内にあります)。c文字が見つからない場合は、nullポインターが返されます。
char str[100] = "hello worldfor2021";
char s = 'o';
char s1 = 'a';
char *n;
n = strrchr(str,s);
printf("%s\n",n); //输出or2021
n = strrchr(str,s1);
printf("%s",n); //输出(null)
4.strstr関数
char *strstr(const char *s1, const char * s2);
この関数は、s1文字列のs2文字列の最初の位置を返します。s1にs2が見つからない場合は、null文字が返されます。
char str[100] = "hello worldfor2021";
char s[100] = "for20";
char s1[100] = "hey";
char *n;
n = strstr(str,s);
printf("%s\n",n); //输出for2021
n = strstr(str,s1);
printf("%s",n); //输出(null)
- ポインタが空であると判断する
if(!n)
printf("1\n");
- 添え字を返す
int num;
num = n - str;
printf("%d\n",num);