C言語,文字列の中に存在する大文字を小文字に変換する

スポンサーリンク

鍛錬 763

C言語,文字列の中に存在する大文字を小文字に変換する

文字列の中に英字(アルファベット)(ASCIIコード)の大文字が存在した場合に、標準Cライブラリの関数 tolower() を使用せずに小文字へ変換するプログラムです。

1文字のみではなく、文字列の先頭から最後尾まで全体を確認します。

関連記事:C言語,標準Cライブラリを使用せずに大文字を小文字に変換する

 
スポンサーリンク

プログラム

以下は、文字列の中に存在する大文字を小文字に変換するプログラム、str_lower.c です。

今回は、次の文字列を変換しています。

変換する文字列
AaBbCc123
// include
#include <stdio.h>
#include <string.h>

// prototype
void StrLower(char *str, size_t size, char *lower);

// main
int main(void)
{
	char str[256] = "";
	char tmp[256] = "";
	
	strncpy(str, "AaBbCc123", sizeof(str) - 1);
	
	// 文字列中に存在する英字の大文字を小文字に変換
	StrLower(str, sizeof(str), tmp);
	printf("%s --> %s\n", str, tmp);
	
	return 0;
}

// ======================================================
// @brief  文字列中に存在する英字(ASCIIコード)の大文字を,
// @brief  小文字に変換する.
// @param  str   [in],変換対象の文字列
// @param  size  [in],変換文字数の上限
// @param  lower [out],変換処理後の文字列
// @return 無し
// @note   英字の大文字以外は変換しない
// ======================================================
void StrLower(char *str, size_t size, char *lower)
{
	size_t i;
	
	for (i = 0; i < size; i++) {
		lower[i] = str[i];
		if (lower[i] >= 'A' && lower[i] <= 'Z') {
			lower[i] = lower[i] + ('a' - 'A');
		}
		else if (lower[i] == '\0') {
			break;
		}
	}
}

実行結果

以下は、プログラム str_lower.c を実行しています。

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra str_lower.c -o str_lower
***@ubuntu:~/***/test/c$ ./str_lower
AaBbCc123 --> aabbcc123

 
上記に示した通り、文字列の中に存在する大文字を小文字に変換することができました。

スポンサーリンク

シェアする

フォローする