[英]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);
您現在可以將buffer
與write
一起使用:
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.