文字列入力の問題
文字列入力関数:
- scanf("%s", str) は、
空格、回车、制表符或EOF
区切り文字、スペース、復帰文字、タブ、または EOF は読み取られない文字列を読み取ります。区切り文字以降の文字は次のエントリとして処理されます。 - gets(str) は、区切り文字、復帰文字、または EOF が読み取られない
回车或EOF
と考えて、文字行を読み取ります。
赋值语句
assign one字符串常量
または字符数组
直接 assign to one を使用することはできません字符数组
。文字配列名はアドレス定数であり、数値配列名を割り当てることができないのと同様に、その値を変更することはできません。次の行は両方とも不正です。
str1 = "China";
str2 = str1;
1 つのまたはに割り当てる赋值语句
ことができるのは 1 つだけです。したがって、これを簡単に実現する方法は、文字列を別の文字配列に使用することです。字符
字符型变量
字符数组元素
strcpy函数
复制
文字列コピー関数: strcpy(str1, str2) は、文字列 str2 を文字配列 str1 ('\0' を含む) にコピーします。文字列 str2 の位置を 1 にすることもできます字符串常量
。str2有效字符
桁 <= str1 の場合、部分的または完全になります覆盖
。str2 の有効な文字数が str1 より大きい場合、エラーが報告されます。
文字列指定ビットコピー関数: strncpy(str1, str2, n) は、文字列 str2 内の文字を、str1 内の元の文字である前面n个
文字配列 str1 にコピーします。取代
最前面n个
文字列の長さの問題
文字配列を初期化する場合、中括号
それを記述する方法は 2 つあります数字
。
- 角括弧
A の中に数字を書きます。数字は実際のサイズと同じです。システムでは不会在后面加'\0'
、文字数は配列のサイズと同じであり、数字と同じです。
B. 数値と実際のサイズが等しくない: システムは、char str[6] = "abc123"; char str[6] = { "abc123"}; char str[6] = { 'a', 'b', 'c', '1', '2', '3'};
未初始化元素置'\0'
文字数が数値に等しくなく、配列のサイズが数値に等しいと応答します。char str[8] = "abc123"; //"abc123\0\0" char str[8] = { "abc123"}; //{"abc123\0\0"} char str[8] = { 'a', 'b', 'c', '1', '2', '3'}; //{'a','b','c','1','2','3','\0','\0'}
- 角括弧内に数値を書き込まないでください。システムは以下の最初の 2 つのケースに応答し
自动在末尾加'\0'
、配列のサイズは文字数と同じになります加一
。3 番目のケースでは不同
、配列の長さは文字数と同じです。char str[] = "abc123"; //"abc123\0" char str[] = { "abc123" }; //{"abc123\0"} char str[] = { 'a', 'b', 'c', '1', '2', '3' }; //故采用该方法定义时,我们一般手动加上'\0',如下: //char str[] = { 'a', 'b', 'c', '1', '2', '3', '\0' };
私たちが一般的に考える文字列の長さは、文字配列内の有効な文字の数を指すため、「\0」は含まれません。
したがって、としてsizeof()
計算を使用することはできませんので、通常は を使用します。文字列を渡すことによって文字列の終了位置を決定し、計算された文字列を返します。字符数组长度
字符串长度
strlen()函数
strlen()函数
'\0'
有效字符个数
字符串长度
その他の文字列関数
文字列結合関数: strcat(str1, str2) は、
文字列 str2 を拼接
文字列 str1 后面
( 包括'\0'
) に変換し、結果を str1 文字配列に入れるため、str1 配列のサイズは要件を満たしている必要があります。関数呼び出し後、返回值
str1 文字配列が取得されます地址
。
文字列比較関数: strcmp(str1, str2) は
str1 と str2に使用されます比较
。比較ルールは、2 つの文字列が出現するまで、または出現するまで値自左至右
によって 1 つずつ比較することです。実際、この関数を使用するときは、結果が同じである場合、2 つの文字列は等しいとみなされます。代わりに、誰が誰より大きいかは気にされず、文字列のサイズは無意味です。ASCII码
不同的字符
'\0'
相等
全部字符
- 2 つの文字列が同じ場合は 0 を返します。
- str1>str2 の場合、正の整数を返します。
- str1<str2 の場合、負の整数を返します。
文字列の大文字小文字変換関数
- strlwr():文字列内の
大写
文字を小写
文字に変換します。 - strupr():文字列内の
小写
文字を大写
文字に変換します。