求助
这段代码中为什么写入文件的数据全是乱码,第二次打开文件出错,程序直接退出了,是什么原因?//randbin.c--用二进制I/O进行随机访问
#include<stdio.h>
#include<stdlib.h>
#define ARSIZE 1000
int main(void)
{
double numbers[ARSIZE];
double value;
const char * file = "numbersdat";
int i;
long pos;
FILE *iofile;
//创建一组double类型的值
for (i = 0; i < ARSIZE; i++)
{
numbers[i] = 100.0*i + 1.0 / (i + 1);
}
//尝试打开文件
if ((iofile = fopen(file, "wb")) == NULL)
{
fprintf(stderr, "Could not open %s for output.\n", file);
exit(EXIT_FAILURE);
}
//以二进制格式把数组写入文件
fwrite(numbers, sizeof(double), ARSIZE, iofile);
fclose(iofile);
if ((iofile = fopen(file, "rb")) == NULL);
{
fprintf(stderr, "Could not open %s for random access.\n", file);
exit(EXIT_FAILURE);
}
//从文件中读取选定的内容
printf("Enter an index in the range 0-%d.\n", ARSIZE - 1);
while (scanf("%d", &i) == 1 && i >= 0 && i < ARSIZE)
{
pos = (long)i * sizeof(double); //计算偏移量
fseek(iofile, pos, SEEK_SET);
fread(&value, sizeof(double), 1, iofile);
printf("The value there if %f.\n", value);
printf("Next index (out of range to quit):\n");
}
//完成
fclose(iofile);
puts("Bye!");
return 0;
}
[此贴子已经被作者于2018-11-26 16:12编辑过]