C言語を使ったマイコン制御プログラムの“イロハ”を解説する本連載。複数条件を満たすパスワード確認プログラムを通じて、複数関数の使い方とフラグの立て方を学びます。
本連載では、これから組み込みシステムのプログラミングを学びたい人向けに、C言語を使ったマイコン制御プログラムの“イロハ”を解説していきます。
毎回少しずつステップアップしていけるよう、本文の最後で問題を出し、次回その解答と解説を紹介していきます。では早速、前回の問題を振り返ってみましょう。
文字列を入力し、その文字列が以下の条件のパスワードとして成り立つか表示します。
問題11は「文字列を入力し、ある条件下でパスワードとして成立するか」を調べるものでした。このプログラムでは、文字列の長さを求め、また文字種別(英大文字、英小文字、数字)を判定しなければなりません。以下にプログラム例を示します。
- #include <stdio.h>
- #include <ctype.h>
- #define CH_LOWER 1
- #define CH_UPPER 2
- #define CH_NUMBER 4
- #define CH_OTHER 8
- #define CH_WORD (CH_LOWER | CH_UPPER | CH_NUMBER)
- void main(void)
- {
- char password[50], *p;
- int flg, len;
- printf("パスワードを入力してください->");
- scanf("%s", password);
- flg = 0;
- for (p = password; *p != '¥0'; p++) {
- char ch = *p;
- if (islower(ch)) flg |= CH_LOWER;
- else if (isupper(ch)) flg |= CH_UPPER;
- else if (isdigit(ch)) flg |= CH_NUMBER;
- else flg |= CH_OTHER;
- }
- len = p - password;
- if ((flg == CH_WORD) && (len >= 6 && len <= 12))
- printf("OK¥n");
- else
- printf("BAT¥n");
- }
password.cを実行すると、次のような結果になります。
Copyright © ITmedia, Inc. All Rights Reserved.