C/C++言語関数学習(4)文字列処理関数

2067 ワード

#include
関数名:strchr
関数プロトタイプ:char*strchr(char*str,char ch);
関数機能:strが指す文字列の中で初めて文字chが現れる位置を探し出す
≪関数の戻り|Function Return|oraolap≫:その場所を指すポインタを返します.見つからない場合は、空のポインタを返します.
パラメータの説明:str-検索する文字列、ch-検索する文字
関数名:strrchr
関数プロトタイプ:char*strrchr(const char*s,int c)
関数機能:文字列sの最後のc文字を含む位置ポインタを得る
関数の戻り:位置ポインタ
関数名:strstr
関数プロトタイプ:char*strstrstr(char*str 1,char*str 2);
関数機能:str 2文字列がstr 1文字列に最初に現れる位置を特定します(str 2の列終端子は含まれません).
関数の戻り値:その位置を返すポインタ、見つからない場合は空のポインタを返します.
関数名:strrev
関数プロトタイプ:char*strrev(char*s)
関数機能:文字列内のすべての文字を逆順に並べ替える
関数の戻り値:sを指すポインタ
関数名:strnset
関数プロトタイプ:char*strnset(char*s,int ch,size_t n)
関数機能:文字列sの前のn文字をchの値に設定する
関数の戻り値:sを指すポインタ
関数名:strset
関数プロトタイプ:char*strset(char*s,int ch)
関数機能:文字列sのすべての文字をchの値に設定する
関数の戻り値:sを指すポインタ
関数名:strdup
関数プロトタイプ:char*strdup(const char*s)
≪関数機能|Function Feature|oem_src≫:文字列のコピー、宛先領域の割当て
関数の戻り値:コピーされた文字列へのポインタ
文字列配列と文字列ポインタの違い:
char str[] = "China";

1、文字列を作成する.
2、変数strを作成して文字列の先頭アドレスを保存します.
char *str = "China";

文字列「China」を指すヘッダアドレスを定義します.
C言語では、プログラムの実行が開始すると、プログラムは使用したすべてのliteral stringを自動的にメモリにロードするので、文字列ポインタは実際にプログラムの実行開始時にすでにメモリに作成された「China」の最初のアドレスを指します.literal stringはconstantメモリ領域に格納されているため、strの操作を試みるのは違法で、プログラミングの良い習慣は
const char *str = "China";
#include  <stdio.h>

int main(int argc, char *argv[])
{
    char *str1 = "China";
    char *str2 = "China";
    char ss[] = "China";
    printf("str1: %p
", str1); printf("str2: %p
", str2); printf("ss: %p
", ss); return 0; }
実行結果:
str1: 00415750 str2: 00415750 ss:   0012FF40
str 1,str 2は同一アドレスを指す
char str1[] = "China";
char *str2;
strcpy(str2,str1);

ポインタが野ポインタであるため、この付与は間違っています.
したがってstrrev()関数の正しい使い方は…………………………………………………………………………