スライドショー

【C言語入門】文字列とは?文字列の使い方総まとめ

C言語には複数の文字をまとめて扱うための文字列があります。char型では1文字しか扱えないので、char型の配列にして複数の文字を扱えるようにしたものを文字列といいます。

この記事では、

  • 文字列とは
  • strcmp関数で文字列を比較する方法
  • strcpy関数で文字列をコピーする方法
  • atoi関数で文字列を数値に変換する方法
  • という基本的な内容から、

    • strcat関数で文字列を連結する方法
    • strtok関数で文字列を分割する方法
    • 正規表現を使って文字列を検索する方法

    などの応用的な使い方に関しても解説していきます。今回はこれらの方法を覚えるために、文字列のさまざまな使い方をわかりやすく解説します!

    文字列とは

    文字列とは、複数の文字を1つにまとめたものです。C言語には他の言語にあるような文字列型(String型)はないで、char型の配列にして文字列を扱います。文字列を使うには、次のようにchar型の配列で宣言をします。

    char 変数名[文字列のサイズ];

    文字列の詳しい使い方はこの記事で順に解説していくので、ぜひ最後まで確認してください!

    strcmp関数で文字列を比較する方法

    ここではstrcmp関数で文字列を比較する方法を解説します。strcmp関数は2つの文字列の文字コードの大小を比較して、次の結果を返します。

    • 第1引数 < 第2引数 の場合は負の値
    • 第1引数 > 第2引数 の場合は正の値
    • 第1引数 = 第2引数 の場合は0

    strcmp関数の使い方を次のプログラムで確認してみましょう。

    #include <stdio.h>
    #include <string.h>
    
    int main(void) {
    
        char str1[] = "123";
        char str2[] = "456";
    
        printf("第1引数 < 第2引数 : %d\n", strcmp(str1, str2));
        printf("第1引数 > 第2引数 : %d\n", strcmp(str2, str1));
        printf("第1引数 = 第2引数 : %d\n", strcmp(str1, str1));
    
        return 0;
    }
    [実行結果]
    第1引数 < 第2引数 : -1
    第1引数 > 第2引数 : 1
    第1引数 = 第2引数 : 0

    プログラムの実行結果から、strcmp関数で文字列の比較ができていることが確認できます。文字列を比較する方法についてはこちらで詳しく解説しているので、ぜひ確認してください!

    strcpy関数で文字列をコピーする方法

    ここではstrcpy関数で文字列をコピーする方法を解説します。strcpy関数は、第1引数にコピー先のアドレス、第2引数にコピー元のアドレスを指定します。strcpy関数の使い方を次のプログラムで確認してみましょう。

    #include <stdio.h>
    #include <string.h>
    
    int main(void) {
    
        char str1[] = "samurai";
        char str2[10];
    
        strcpy(str2, str1);
        printf("str2 = %s", str2);
    
        return 0;
    }
    [実行結果]
    str2 = samurai

    プログラムの実行結果から、strcpy関数で文字列のコピーができていることが確認できます。文字列のコピーについてはこちらで詳しく解説しているので、ぜひ確認してください!

    【C言語入門】strcpyとstrcpy_sの使い方(文字列のコピー)
    更新日 : 2019年4月2日

    atoi関数で文字列を数値に変換する方法

    ここではatoi関数で文字列を数値に変換する方法を解説します。atoi関数はchar型の文字列の数値をint型に変換します。atoi関数の使い方を次のプログラムで確認してみましょう。

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void) {
    
        char str[] = "123";
        int num;
    
        num = atoi(str);
        printf("num = %d", num);
    
        return 0;
    }
    [実行結果]
    num = 123

    プログラムの実行結果から、atoi関数でint型に変換できていることが確認できます。文字列を数値に変換する方法についてはこちらで詳しく解説しているので、ぜひ確認してください!

    【C言語入門】atoiの使い方(文字列から数値への変換)
    更新日 : 2019年4月2日

    文字列の連結と分割をする方法

    strcat関数で文字列を連結する方法

    ここではstrcat関数で文字列を連結する方法を解説します。strcat関数は第一引数に渡した文字列へ、第二引数へ渡したの文字列を連結してくれます。

    第一引数へ渡す文字列配列は、連結する文字列も入りきる大きさを持っている必要があるので注意しましょう。また戻り値にも2つの文字列を連結した結果の、文字列のポインタを返します。strcat関数の使い方を次のプログラムで確認してみましょう。

    #include 
    #include 
     
    int main(void) {
        char str1[30] = "Hello ";
        char str2[] = "World!";
        
        // 文字列の連結
        strcat(str1, str2);
        printf("str1の文字列は: %s\n", str1);
        
        return 0;
    }
    [実行結果]
    str1の文字列は: Hello World!

    プログラムの実行結果から、strcat関数で文字列の連結ができていることが確認できます。

    strtok関数で文字列を分割する方法

    ここではstrtok関数で文字列を区切り文字で分割する方法を解説します。strtok関数の第1引数には分割する文字列、第2引数には区切り文字を指定します。

    戻り値は区切り文字で分割された文字列のポインタを返します。strtok関数の使い方を次のプログラムで確認してみましょう。

    #include <stdio.h>
    #include <string.h>
    
    int main(void) {
    
        char str1[] = "1,23,456";
        char *str2;
    
        str2 = strtok(str1, ",");
        printf("%s\n", str2);
    
        while (str2 != NULL) {
            str2 = strtok(NULL, ",");
    
            if (str2 != NULL) {
                printf("%s\n", str2);
            }
        }
    
        return 0;
    }
    [実行結果]
    1
    23
    456

    プログラムの実行結果から、strtok関数で文字列を分割できていることが確認できます。文字列の連結と分割をする方法についてはこちらで詳しく解説しているので、ぜひ確認してください!

    【C言語入門】文字列の連結・分割(strcat、strtok)
    更新日 : 2019年3月29日

    正規表現を使って文字列を検索する方法

    文字列のパターンを指定して特定の文字列が含まれているかを検索するには、正規表現を使います。正規表現を使って文字列を検索する方法は複雑になるため、こちらの記事で詳しく解説しています。

    ぜひ確認してください!

    【C言語入門】文字列内の検索方法まとめ(文字指定、正規表現)
    更新日 : 2018年10月22日

    まとめ

    いかがでしたか?今回は文字列の使い方について解説しました。文字列の操作にはコピーや連結などの便利な関数があるのでぜひ活用してくださいね!

    もし、文字列を使う方法を忘れてしまったらこの記事を確認してください!

    LINEで送る
    Pocket

    ITエンジニアへ転職したい方におすすめ

    自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
    エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

    しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

    こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

    そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

    侍ワークスは、独自案件を多く掲載しているだけでなく、

    ・応募から就業まで一貫したサポート

    ・就業後もアフターフォロー

    といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

    まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

    書いた人

    中沢 丈

    中沢 丈

    フリーランスエンジニア。
    システム開発からコンテンツ作成まで幅広く対応します。

    連絡先はこちらです。
    [email protected]