C编程:write()问题

| 我需要将数组的内容写入文件。假设我生成随机数并将其放入数组中。如何将这些值复制到输出文件中?
[... previous code/declarations ...]

file = open(filename, O_WRONLY|O_CREAT|O_TRUNC, S_IRWXU|S_IWGRP|S_IWOTH);
buffer = (double *) calloc(d, sizeof(double));
for (i = 0; i < d; i++)
{
    double div = (double) (RAND_MAX/0.333);
    double r = rand()/div;
    (*(buffer+i)) = r;
}
write(file, buffer, sizeof(double));

[ ... ]
如果我尝试读取文件,那么我看到的只是这个内存垃圾,整个屏幕上都是乱七八糟的字符。谁能帮我弄清楚我做错了什么吗?     
已邀请:
write
调用用于将内存块写入文件,如果您稍后尝试仅输出文件,则大多数情况下这似乎是垃圾。那是因为它们很可能是IEEE754二进制表示形式。 如果要数字的文本表示,请使用类似以下内容的方法:
fh = fopen (filename, \"w\");
for (i = 0; i < d; i++)
    fprintf (fh, \"%f\\n\", buffer[i]);
fclose (fh);
    
您正在将随机二进制值写入文件。读取文件时,您会看到随机的二进制值,解释为字符。问题出在哪里?     
至少这部分是错误的:
write(file, buffer, sizeof(double));
您只写一个值,而不是整个数组。将大小乘以
d
(这似乎是数组中元素的数量)。     
你为什么放
double div = (double) (RAND_MAX/0.333);
循环内?     

要回复问题请先登录注册