C++
 Computer >> コンピューター >  >> プログラミング >> C++

C言語で文字列を大文字・小文字に変換するプログラムの書き方

C言語で文字列を大文字に変換するプログラムは以下のとおりです。ASCIIコードの特性を利用したシンプルな方法なので、初心者の方にもわかりやすい内容となっています。

例:小文字から大文字への変換

#include <stdio.h>
#include <string.h>

int main() {
    char s[100];
    int i;
    printf("\nEnter a string : ");
    gets(s);

    for (i = 0; s[i]!='\0'; i++) {
        if(s[i] >= 'a' && s[i] <= 'z') {
            s[i] = s[i] - 32;
        }
    }
    printf("\nString in Upper Case = %s", s);
    return 0;
}

実行結果

このプログラムを実行すると、次のような出力が得られます。

Enter a string : hello world!
String in Upper Case = HELLO WORLD!

プログラムの解説

このプログラムでは、文字列を大文字に変換する処理がmain()関数内に記述されています。まず、ユーザーが入力した文字列を格納するためのchar型配列 s[100] を宣言します。

次に、forループを使って文字列の先頭から終端文字('\0')までを1文字ずつ調べます。if文でその文字が小文字('a'〜'z')であるかどうかを判定し、小文字であればASCIIコード値から32を引くことで、対応する大文字に変換しています。

for (i = 0; s[i]!='\0'; i++) {

    if(s[i] >= 'a' && s[i] <= 'z') {
        s[i] = s[i] - 32;
    }
}

これは、ASCIIコードにおいて英小文字と英大文字のコード値が常に32だけ異なるという性質を利用したテクニックです。たとえば「a」(97)から32を引くと「A」(65)になります。

続いて、逆に文字列を小文字に変換するC言語のプログラムを紹介します。

例:大文字から小文字への変換

#include <stdio.h>
#include <string.h>

int main() {
    char s[100];
    int i;

    printf("\nEnter a string : ");
    gets(s);

    for (i = 0; s[i]!='\0'; i++) {
        if(s[i] >= 'A' && s[i] <= 'Z') {
            s[i] = s[i] + 32;
        }
    }

    printf("\nString in Lower Case = %s", s);
    return 0;
}

実行結果

このプログラムを実行すると、次のような出力が得られます。

Enter a string : HELLOWORLD
String in Lower Case = helloworld

プログラムの解説

こちらのプログラムでも、変換処理はmain()関数内に記述されています。char型配列 s[100] にユーザーが入力した文字列を格納し、forループで各文字を順番にチェックしていきます。

if文によって文字が大文字('A'〜'Z')かどうかを判定し、大文字であればASCIIコード値に32を加算することで、対応する小文字へと変換します。

for (i = 0; s[i]!='\0'; i++) {
    if(s[i] >= 'A' && s[i] <= 'Z') {
        s[i] = s[i] + 32;
    }
}

補足:gets()関数の使用について

なお、上記サンプルコードで使用しているgets()関数は、入力サイズを制限できないためバッファオーバーフローの危険性があり、C11規格では標準ライブラリから削除されました。実際の開発では、fgets()など安全な入力関数を使用することをおすすめします。また、標準ライブラリのtoupper()tolower()関数(ctype.hヘッダ)を使えば、同様の変換をより簡潔かつ安全に実装できます。

  1. C++で直方体の体積と表面積を計算するプログラムの作成方法

    直方体とは? 直方体とは、6つの長方形の面から構成される三次元の立体図形です。各面の縦と横の長さが異なるため、全体として異なる長さの辺を持っています。立方体と直方体の違いは、立方体では長さ・高さ・幅がすべて等しいのに対し、直方体ではこれら3つが必ずしも同じではないという点です。 直方体の主な性質は以下のとおりです。 6つの面 12本の辺 8つの頂点 以下は直方体のイメージ図です。 問題の概要 直方体の長さ(L)、幅(W)、高さ(H)が与えられたとき、その総表面積と体積を求めるのが課題です。表面積とは各面が占める空間の広さのことであり、体積とはその形状が内包できる空間の大きさのことです。

  2. C++で立方体の体積と表面積を求めるプログラム

    立方体とは? 立方体とは、正方形の面を6つ持つ三次元の立体図形です。すべての辺の長さが等しいという特徴があります。立方体は唯一の正六面体であり、以下のような性質を持ちます。 面の数:6つ 辺の数:12本 頂点の数:8つ 以下は立方体の図です。 問題の概要 立方体の一辺の長さが与えられたとき、その立方体の表面積と体積を求めることが課題です。ここで、表面積とは立方体の各面が占める面積の合計を指し、体積とはその図形が内包できる空間の大きさを指します。 立方体の表面積と体積を計算するには、次の公式を使用します。 表面積 = 6 × 辺 × 辺 体積 = 辺 × 辺 × 辺 入力例と出力例 入力