c - 在C中的linux中输出随机数到文件

标签 c linux file-io systems-programming

我正在尝试使用循环多次迭代将数字(随机生成)写入文件。我有:

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

代码编译并运行。我可以在屏幕上打印“n”,文件已打开(代码未显示),但当我尝试使用 gedit 打开文件时,文件中似乎没有任何数据。我想要一个具有一定长度的非常大的文件。我哪里错了?任何帮助表示赞赏。

顺便问一下,什么是真随机函数?谢谢。

最佳答案

write() 的原型(prototype)是:

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

请注意,第二个 arg 是一个指针值,因此向那里传递一个随机数(这就是您所做的1)确实有点令人惊讶不是段错误。

无论如何,如果您想做的是将数字写成文本,您需要先将其放入字符串中:

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 中检查文件。

关于c - 在C中的linux中输出随机数到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20978672/

相关文章:

php - .conf 未通过 php 找到

linux - 我在 rc.local 中不断收到错误

c - 使用 C 读取和写入整数到二进制文件?

c - 编译C程序时gcc的错误

linux - 如何将 Linux 日期从 14-01-2015 转换为 14-1-2015?

c - 危险的脚本它会起作用吗?

java - 在 OSGI Bundle 中查找文件和文件夹

c - 需要优化如下split()函数代码

java - 桌面到安卓的WiFi TCP连接传输的垃圾数据

objective-c - 如何获得 ivar 的 Objective-C 类?