2013-10-07 70 views
0

前言:我已將問題簡化爲其關鍵功能,所以如果聽起來很奇怪,那是因爲這是整個程序的一個小方面。創建一個隨機大小的文件[1 ... 500] KB

問題:

我想創造一些像100個的文本文件:我會循環,用我的循環計數器來命名文件。

然後,我想用隨機字符串填充每個文件。我用下面定義的字符串敲擊這個。我想從[1KB到500KB]填充文件。

struct String // And yes I am using my own String library. 
{ 
    char *c; 
    int length; 
    int maxLength; 
} 

讓我們假設我打開了文件(可能此刻我創建它,所以它是空的)。現在我會檢查這樣的事情。

int range = Random.Range(0,500); 

我會得到一個預先確定文件大小的數字。因此,如果range == 100那麼該文件將填充100KB的「數據」。

我會先創建我的字符串。

// Maybe making this 100 chars would help? 
String *s1 = makeString("abcdefghijklmnopqrstuvwxyz"); 

我怎麼會想出多少次,我有我的字符串s1寫入到文件,以使其成爲range的大小?最好在寫入文件之前,我不想先寫入然後再檢查,然後重新寫入。

而我將如何獲得C中的隨機整數值?我習慣了C#中的Random.Range。

+1

您的意思是preferred-file-size除以字符串長度:'range * 1000/s1-> length;'? – Kninnug

+1

爲了簡化問題,請確保您的字符串的大小爲1024,這是千字節中的字節數。您需要編寫字符串'((範圍* 1024)/ s1->長度'以獲得所需的文件大小。 – naitoon

回答

0

爲了簡單起見,如果可以將字符串大小作爲1KB(1024字節)的公分母,那麼最好。所以你不必小心小心。 之後,你可以做上面提到的@naitoon(範圍* 1024)/ s1->長度。如果您的字符串的每個字符都是1個字節長。

至於隨機整數,你可以調用標準庫RAND()返回整數0至RAND_MAX,這是至少32767

而且,爲了保持隨機數與範圍(0 〜500),你可以做一個模塊化的返回值。

range = rand() % 500;