C言語ケーススタディ 文字列操作3(文字列の前後逆転)




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を強力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



このケースは最初に文字列の長さを計算する必要があります。ループでカウントすることもできますが、ここではすでに講座で説明したstrlen()関数を使用します。
main()
{
        char *str;
        int len;

        str = "abcdefghi";
        len = strlen(str);
        printf("LEN = %d\n", len);
}

LEN = 9
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて... 文字列の長さがわかればループ内で(len-i-1)とすれば文字列の後ろから表示することができます。
main()
{
        char *str;
        int i, len;

        str = "abcdefghi";
        len = strlen(str);
        for (i = 0; ; i++) {
                if(*(str+i) == '\0')
                        break;
                putchar(*(str+(len-i-1)));
        }
}

ihgfedcba
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて... 上記のプログラムで表示している内容をそのまま配列に格納すればプログラムは完成です。
main()
{
        char result[100];
        char *str;
        int i, j, len;

        str = "abcdefghi";
        len = strlen(str);
        j = 0;
        for (i = 0; ; i++) {
                if(*(str+i) == '\0')
                        break;
                result[j++] = *(str+(len-i-1));
        }
        result[j] = '\0';
        printf(">>>%s\n", result);
}

>>>ihgfedcba
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...