本ブログでは、これまでに、<ctype.h>で提供されるtoupper関数とtolower関数を使って、英字(アルファベット文字)を大文字あるいは小文字に変換するプログラムをご紹介している。
そこでは、添字演算子[ ]を使用した。
今回は、ポインタを活用して、文字列内の英字(アルファベット文字)を大文字あるいは小文字に変換するプログラムをご紹介しよう。
//文字列内の英字を大文字・小文字に変換するプログラム
#include <ctype.h>
#include <stdio.h>
//文字列内の英字を大文字に変換
void str_toupper(char *s)
{
while (*s)
{
*s = toupper(*s);
s++;
}
}
//文字列内の英字を小文字に変換
void str_tolower(char *s)
{
while (*s)
{
*s = tolower(*s);
s++;
}
}
int main(void)
{
char str[128];
printf("文字列を入力してください:");
scanf("%s",str);
str_toupper(str);
printf("大文字:%s\n",str);
str_tolower(str);
printf("小文字:%s\n",str);
return 0;
}
実行結果
文字列を入力してください:Dinosaur
大文字:DINOSAUR
小文字:dinosaur
関数str_toupperと関数str_tolowerは、while文で文字列sを走査する。
先頭文字から始めて、ポインタのインクリメントによって次の文字に着目する動作を、ナル文字に出会うまで繰り返す。
(参考)新・解きながら学ぶC言語 第2版 柴田望洋 (監修・著)、 由梨かおる(著)SBクリエイティブ
コメント