2016-10-13 21 views
0

おはよう!私は初心者のプログラマーであり、Cのコンセプトを適用する方法とまだ混乱しています。文字列に格納された文字 - ランダム化されたときに別の文字列変数に格納する方法

私はプロジェクトを進めています。私の問題は、特定の文字を初期化して文字列に格納していることです(vars [28])。私の目標は、ランダムな方法で文字列の文字を生成し、生成された文字列を別の変数に格納することです。

int randnum = 0, num = 0; 
char vars[28] = "|abcdefghijklmonpqrstuvwxyz."; //initialized string 
char term; //where to store randomized string 
int i = 0; 
char choi[1]; 

printf ("%c", vars[0]); 

srand (time(NULL)); 
randnum = rand() % 30; //only 30 characters maximum to be stored   

for (i = 0; i <= randnum; i++) 
{ 
    //randomly produce vars[28] characters here and store into 'term' 
} 

その他の質問:と。無作為化されたとき、お互いの隣にいるのですか?

ありがとうございました!

+0

あなたがしたいことを想像してください。無作為に選択された文字列から文字列を生成します。生成された文字列の長さに一致するループで 'vars [rand()%28]'を使って文字列を作成する必要があります。 – mewa

+0

こんにちは!うーん、私は "term [100] = vars [rand()%28];"ループ内で、 "printf("%s "、term)"しかし、端末に出力されません...私のミスは何ですか? –

+0

'term'は配列や文字列へのポインタではなく、1バイトで、' term [100] 'はランダムなメモリ位置にアクセスしており、セグメンテーションフォルトが発生します。 –

答えて

2

termは、ちょうどです。文字です。文字列は配列の文字です。カップルの最初の章(トップスを - 私は強くあなたがが、C言語の講義のフォローアップをお勧め

int randnum = 0; 
char* vars = "|abcdefghijklmonpqrstuvwxyz."; // array of alowed characters 
char term[30 + 1]; // allocating an array of 30 characters + 1 to hold null terminator 
int i = 0; 

srand (time(NULL)); 
int length = rand() % 30 + 1; // random length up to 30, minimum 1 character (the +1) 

for (i = 0; i < length; i++) 
{ 
    randnum = rand() % 28; // random index to the array of allowed characters 
    term[i] = vars[randnum]; // assign random character to i-th position of term 
} 
term[i] = '\0'; // end string 

printf("%s\n", term); 

:あなたのプログラムは次のようになります。ランダムな文字列を作成するために、標準のC文字列は、だから、0で終わります)、すべてをクリアする必要があります!

+0

OH I SEE!どうもありがとうございます!私はまだCのポインタとアドレスに関することについて少し混乱しています、そして私は将来もっと学ぶことを望みます。これは私をたくさん助けました!ありがとうございました! –

関連する問題