gpt4 book ai didi

c - 在c中将数据保存到文件并从中读取数据时出现问题

转载 作者:行者123 更新时间:2023-11-30 18:12:10 27 4
gpt4 key购买 nike

根据标题,当程序运行且文件存在时,将数据保存到文件的代码似乎工作正常。然而,在代码的第二部分中,程序编译但在运行时因错误而停止。在发布代码之前,我想对发帖者表示感谢,因为我从这个网站学到了很多东西,但这是我第一次发帖。

#include <stdio.h>
#include <stdlib.h>

int const MAX_SIZE = 1000000;
FILE *randomdata;
char outputFilename[] = "array.dat";

int main(void)
{
int i;

randomdata = fopen(outputFilename, "w");
for (i = 0; i < MAX_SIZE; i++)
fprintf(randomdata, "%lf\n", rand() * 1.0 / RAND_MAX);
return 0;
}

可以看出,第一段代码创建了一个名为 array.dat 的文件,用于存储随机数。

我假设某处存在逻辑错误的第二部分是从 array.dat 中获取数字,然后找出中值。

#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 1000000

#include <time.h>

int main(void)
{
int left, right;
int pivot_index, store_index;
int i, k;
double tmp;
double a[MAX_SIZE];
double pivot_value;
double start;
double end;

FILE *f;
char inputFilename[] = "array.dat";

for (i = 0; i < MAX_SIZE; i++) {
f = fopen("array.dat", "r");
fscanf(f,"%lf", &a[i]);
printf("%lf", &a[i]);
}

k = MAX_SIZE / 2; /* the median position */
left = 0; right = MAX_SIZE;
start = clock();
srand(time(0));

while (left != k) {
pivot_index = rand() % (right -left) + left;
pivot_value = a[pivot_index]; /* swap (a[ pivot_index ],a[ right -1]) ; */
tmp = a[pivot_index];
a[pivot_index] = a[right - 1];
a[right - 1] = tmp;
store_index = left;

for (i = left; i < right - 1; i++) {
if (a[i] < pivot_value) { /* swap (a[ store_index ], a[i ]) ; */
tmp = a[store_index];
a[store_index] = a[i];
a[i] = tmp;
store_index++;
}
} /* swap (a[ right -1] , a[ store_index ]) ; */

tmp = a[right - 1];
a[right - 1] = a[store_index];
a[store_index] = tmp;
pivot_index = store_index;

if (k <= pivot_index) {
right = pivot_index;
} else {
left = pivot_index + 1;
}
}
end = clock();
printf("The program took %lf seconds\n", endstart / 1000000);
printf("Median is %lf\n", a[k - 1]);
return 0;
}

我认为代码中的问题肯定出现在以下部分:

for (i = 0; i < MAX_SIZE; i++) {
f = fopen("array.dat", "r");
fscanf(f,"%lf", &a[i]);
printf ("%lf", &a[i]);
}

最佳答案

在 c 中以读取模式使用 FILE 时,必须了解三件事。1)首先通过fopen()打开文件;2) 检查文件是否打开。3)通过fclose()关闭文件。

关于c - 在c中将数据保存到文件并从中读取数据时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40292330/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com