簡體   English   中英

在C中將隨機數輸出到Linux中的文件

[英]Output random number to file in linux in C

我正在嘗試使用某個循環來將數字(隨機生成)寫入文件中。 我有:

while (i++ < number) {
   n = randno();
   write(openFd, (char) n, sizeof(int)); 
}

該代碼編譯並運行。 我可以在屏幕上打印'n',文件已經打開(代碼未顯示),但是當我嘗試使用gedit打開文件時,似乎文件中沒有任何數據。 我想要一個具有一定長度的非常大數量的文件。 我要去哪里錯了? 任何幫助表示贊賞。

順便說一句,什么是true random function 謝謝。

write()的原型是:

ssize_t write(int fd, const void *buf, size_t count);

請注意,第二個arg是一個指針值,因此在該處傳遞一個隨機數(這是您所做的1 )不會造成段錯誤,這有點令人驚訝。

無論如何,如果要做的是將數字寫為text ,則需要先將其放入字符串中:

int n = randno();
char buffer[16]; // Will hold any int value + `\0`
sprintf(buffer, "%d", n);

您現在可以將bufferwrite一起使用:

write(openFd, buffer, strlen(buffer));

1. n是一個整數; (char)強制轉換將其截斷。 也許您的意思是(char*)&n ,它可以寫出數字,但是用二進制而不是文本! 我想這不是您想要的,因為您正在檢查gedit中的文件。

如果您有FILE *,也可以使用fprintf

fprintf(fp, "%d",n);

通過將n強制轉換為char類型,您已經創建了一些東西,可以隨機寫入指向0到255之間的數字的內存。擴展您在做什么,您所需要的就是。

while (i++ < number) {
   int n;
   n = randno();
   write(openFd, &n, sizeof(int)); 
}

&運算符會將指針傳遞給N而不是n值...

真正的隨機函數是輸出不可計算的真實隨機數的東西。

Linux上的/ dev / random相對於/ dev / urandom。

對於您的文件寫入,我將使用“ fprintf”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM