【問題10】ポインタで文字列を操作しよう完全マスター! 組み込みC言語プログラミング(11)(3/3 ページ)

» 2014年09月19日 11時00分 公開
[横田一弘 埼玉県立新座総合技術高等学校 教諭,MONOist]
前のページへ 1|2|3       

ポインタ変数による文字列の走査

 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文字以下であること。

⇒解答と解説は次回



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.