2016-10-13 105 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'不是一個數組,也不是一個'char *'指針,它是一個單字節,'term [100]'正在訪問隨機存儲器位置並且可能導致分段錯誤。 –

回答

2

term只是字符。一個字符串是數組的字符。標準C字符串以0結尾所以,爲了創建一個隨機字符串你的程序應該是這樣的:

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語言的講座,雖然 - 一對夫婦第一章(TOPS ),應該清除一切!

+0

OH我看到了!非常感謝!對於C語言中的指針和地址,我仍然有點困惑,我希望將來能夠學到更多。這幫了我很多!謝謝! –

相關問題