- ベストアンサー
C言語の基礎
1.main関数の引数である、int argc と char **argvはどのように使用するのでしょうか? 2.特定の文字列(UserID)を入力し,それぞれの文字が使用可能文字列(数字とアルファベット(大文字小文字)と一致したら,使用可能文字列(配列)から削除し,残りの配列の文字を使って6~8文字のパスワードを作成するにはどのように関数を設計すればいいでしょうか? パスワードを作成するのに時刻を種とした乱数を使用してある一文字を取得するという方法を考えました。 srand(unsigned time(NULL); パスワードはUserIDに使用した文字を含まないようにしたいので,(使用可能文字列)-(UserID)= パスワードに使用できる文字列になると思うのですが, 配列-配列なんてできるのでしょうか?実力不足のため,変な質問をして申し訳ございません。どうかご教授ください。
お礼
前回に引き続き、ご丁寧なご教授を賜り,ありがとうございます。パラメータのチェックルーチンは if(1==argc) return help() (←help()関数は単に使用方法を表示したもの) としました。使用可能な文字テーブル上の、UserIDに使用されている文字を使用できなくしてしまう方法はすばらしいですね。私が関数を作ると長くなってしまい効率が悪いプログラムになってしまっているようです。UserIDと一致する文字を使わないようにするやり方は参考にさせていただきます。もう少しでできそうですので,がんばってみます。どうもありがとうございました。今後もよろしくお願いいたします。
補足
すみません。ちょっとわからないので、おしえてください。 パスワードを作成するのに時間を種にした乱数を使用してある一文字を取得するのに while(nCount<nLength){ srand(ungigned int time(NULL)); nLetter=rand()%64; -------------------------- というところで、%64の意味がわかりません。%64は余りという意味でしょうか? rand()は0から32767までの数値を返すのですよね。RAND_MAXは定義されている定数で、2の15乗‐1に変換されるということを本で見たのですが,どういうことでしょうか? %64とすると0~63までの乱数を取得できるということになるということですが、この意味が理解できないのですが、ご教授願えますでしょうか?あまりに知識がなさ過ぎて申し訳ありません。よろしくお願いいたします。