プロが教えるわが家の防犯対策術!

#include<stdio.h>
#include<string.h>
#include<ctype.h>

int bangouchak(char *p)
{

if(strlen(p)!=6){

printf("6桁で入力してください。\n");
return -1;
}
if (*p == '0') {
printf("1000000~999999で入力してください。\n");
return -1;
}
while (*p != '\0') {
if (isdigit(*p++) == 0) {
printf("英字が入ってます。\n");
return -1;
}
}
return 1;

}

int main(void)
{

int ret=-1;
char input[256];


while(ret!=1){
printf("6桁の数字を入力してください==>");
gets(input);
ret=bangouchak(input);
}
printf("正常なデータが入力されました。\n");
return 0;


このプログラムはなにをしているのかわからないので誰かわかる方いましたら教えてください(;´・ω・)

A 回答 (2件)

ソースの中に、説明のコメントを入れておきました。


#include<stdio.h>
#include<string.h>
#include<ctype.h>

int bangouchak(char *p)
{

if(strlen(p)!=6){
/* 説明:文字列の長さが6ではなければ、エラーとする */

printf("6桁で入力してください。\n");
return -1;
}
if (*p == '0') {
/* 説明: 一個目のデータが0から始まる場合、エラーとする*/
printf("1000000~999999で入力してください。\n");
return -1;
}
while (*p != '\0') {
/* 説明: 文字列の後ろにあるNULLでなければ、下のチェックを実施*/
if (isdigit(*p++) == 0) {
/* 説明: 数字でなければ、エラーとする。と同時に、pを次の文字を指すように調整(p++)*/
printf("英字が入ってます。\n");
return -1;
}
}
/* 説明: 数字チェック正常終了*/
return 1;

}

int main(void)
{

int ret=-1;
char input[256];


while(ret!=1){
/* 説明: 数字チェックが正しく実行されるまで、ループし続ける*/
printf("6桁の数字を入力してください==>");
/* 説明: 入力してもらう*/
gets(input);
/* 説明: 入力したものが6桁の数字であることをチェックする*/
ret=bangouchak(input);
}
printf("正常なデータが入力されました。\n");
return 0;
    • good
    • 0

「6桁の数字を入力してください==>」と入力を促され、6桁の数字を入力した場合には「正常なデータが入力されました。

」、そうでない場合には入力された情報に応じて違うメッセージを表示するプログラムです。
ちなみに、すごく長い文字列を入力すると異常終了するというバグも含まれています。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!