学校の宿題ですが
乱数を使用して、文字列を作成するのですが
分かりません。問題は以下のとおりです。
ランダムな文字列を作成する関数void passwd()作成
1、使用できる文字はアルファベット大文字のAからZ,小文字のaからzおよび数字の2から9の合計60文字。
2、文字列の長さは7文字から10文字のランダムに決められた値とする。
3、文字列に大文字・小文字・数字すべてが入っている文字列しか生成しない。
たとえば、E4F7ukYはいいが、kuh8ghandは大文字がないので、やり直しという風です。
分かりにくい部分がありますが、よろしくお願いします。
一応、条件1、2はクリアできたのですが、条件3のやり直しする部分をどのようにするか分かりません、
#include <stdlib.h> #include <stdio.h> #include <time.h> int main (void){ int nc; char pwd[11]; int n; char c; int k; char yn[2]; srand((unsigned)time(NULL)); nc = 7+rand()%4; n = 0; do{ k=rand()%3; switch(k){ case 0: c='2'+rand()%8;break; case 1: c='a'+rand()%26;break; case 2: c='A'+rand()%26;break; } pwd[n++] = c; }while(n<nc); pwd[n]='\0'; printf("生成されたパスワード:%s\n",pwd); return 0; }