strupper2.cは、ポインタ・バージョンのプログラムです。アルゴリズムはstrupper.cと全く同じです。
#include <stdio.h>
 
void main(void)
{
     char str[100], *p;
 
     printf("文字列を入力してください->");
     scanf("%s", str);
     for (p = str; *p != '¥0'; p++) {
         if (*p >= 'a' && *p <= 'z')
             *p = *p - 'a' + 'A';
     }
     printf("%s¥n", str);
}
strupper2.cでは、ポインタ変数pによりstrを先頭から順に一文字ずつ、ヌル文字に行き着くまで調べます。
9行目のfor文の制御式において
p = str;
で、pをstrの先頭にポイントさせます。
*p != '¥0'
は、pの指す文字(char)がナル文字でない条件を表し、
p++
では、ポインタを一文字先に進めています。
10行目の
*p >= 'a' && *p <= 'z'
あるいは、11行目の
*p = *p - 'a' + 'A';
は、strupper.cではstr[i]としたとことを、*pすなわち「pの指す文字」へと置き換えただけです。
それでは、次回の宿題です。
文字列を入力し、その文字列が以下の条件のパスワードとして成り立つか表示します。
⇒解答と解説は次回
Copyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク