C言語における文字列の基礎と主な文字列操作関数を解説
C言語において、文字列(String)とは文字の配列であり、必ずヌル文字(\0)で終端されるという特徴があります。このヌル文字はプログラマが手動で配置する必要はなく、コンパイラが自動的に文字列の末尾に付加してくれます。
ここで重要なのが「配列」と「文字列」の違いです。通常の配列では、コンパイラは末尾にヌル文字を配置しません。一方、文字列として扱う場合は、コンパイラが自動的にヌル文字を末尾に追加します。これにより、文字列の終わりを正しく認識できるようになっています。
C言語における文字列の宣言方法
C言語で文字列を宣言する際の基本構文は以下の通りです。
char myStr[size];
各要素の意味は次のようになります。
- myStr: 文字列の名前(変数名)
- size: 文字列のサイズ(格納する文字数+ヌル文字分)
文字列の初期化
C言語では、文字列を次の2通りの方法で初期化できます。
char myStr[size] = "string";
char myStr[size] = { 's','t','r','i','n','g','\0' };
1つ目は文字列リテラルを使った方法で、2つ目は各文字を要素として個別に指定する方法です。どちらの方法でも、最後にヌル文字が必要である点に注意してください。
主な文字列操作関数一覧
C言語には、文字列を操作するための標準ライブラリ関数(<string.h>ヘッダ)が多数用意されています。代表的な関数を以下の表にまとめました。
| 関数 | 用途 |
|---|---|
| strcpy(s1, s2) | 文字列s2を文字列s1にコピーする |
| strcat(s1, s2) | 文字列s2を文字列s1の末尾に連結する |
| strlen(s1) | 文字列s1の長さを返す |
| strcmp(s1, s2) | s1とs2が同じなら0を返す。s1のASCII値が大きければ0より大きい値、小さければ0より小さい値を返す |
| strchr(s1, ch) | 文字列s1内で最初に文字chが出現する位置へのポインタを返す |
| strstr(s1, s2) | 文字列s1内で最初に文字列s2が出現する位置へのポインタを返す |
文字列操作のサンプルコード
以下は、C言語での文字列操作の具体的な例です。
サンプルプログラム
#include <stdio.h>
#include <string.h>
int main () {
char s1[10] = "Hello";
char s2[10] = "World";
int len, com ;
strcpy(s1, s2);
printf("Strings s1 and s2 : %s\t%s\n", s1, s2 );
strcat( s1, s2);
printf("String concatenation: %s\n", s1 );
len = strlen(s1);
printf("Length of string s1 : %d\n", len );
com = strcmp(s1,s2);
printf("Comparison of strings s1 and s2 : %d\n", com );
return 0;
}
実行結果
Strings s1 and s2 : WorldWorld String concatenation: WorldWorld Length of string s1 : 10 Comparison of strings s1 and s2 : 87
このプログラムでは、まずstrcpy()でs2の内容をs1にコピーし、その後strcat()でs2をs1の末尾に連結しています。strlen()で文字列の長さを取得し、strcmp()で2つの文字列を比較した結果も出力しています。
-
C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説
C言語の標準ライブラリ関数 int strcmp(const char *str1, const char *str2) は、ポインタ str1 が指し示す文字列と、str2 が指し示す文字列を比較するための関数です。C言語において、文字型の配列は「文字列」と呼ばれます。まずは文字列の基本的な扱い方から確認していきましょう。文字列の宣言文字列(文字配列)の宣言は以下のように行います。char stringname [size];例えば、char string[50]; と宣言すれば、最大50文字の長さを持つ文字列を格納できます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1
-
C言語のstrcpy()関数とは?基本構文と使い方をわかりやすく解説
C言語のライブラリ関数 char *strcpy(char *dest, const char *src) は、src が指し示す文字列を dest にコピーするための関数です。 C言語では、文字の配列のことを「文字列」と呼びます。 文字列の宣言 文字列(文字配列)の宣言は、以下の形式で行います。 char stringname[size]; 例えば char string[50]; と宣言すると、最大50文字の文字列を格納できる配列が確保されます。 文字列の初期化 文字列の初期化には、主に以下の2つの方法があります。 1. 文字定数を使う方法 char string[10] = {H,