学校の宿題ですが
乱数を使用して、文字列を作成するのですが
分かりません。問題は以下のとおりです。
ランダムな文字列を作成する関数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;
}