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.