連載
【問題10】ポインタで文字列を操作しよう:完全マスター! 組み込みC言語プログラミング(11)(3/3 ページ)
C言語を使ったマイコン制御プログラムの“イロハ”を解説する本連載。今回も引き続き、「配列とポインタの深い関係」を探ります。
ポインタ変数による文字列の走査
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」
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の指す文字」へと置き換えただけです。
問題11
それでは、次回の宿題です。
問題11:
文字列を入力し、その文字列が以下の条件のパスワードとして成り立つか表示します。
- 英小文字・英大文字・数字を少なくとも1文字含むこと。
- 英数字以外の文字が含まれていないこと。
- 長さが6文字以上、12文字以下であること。
⇒解答と解説は次回
Copyright © ITmedia, Inc. All Rights Reserved.