gpt4 book ai didi

C 数组行为 - 全局/局部/动态

转载 作者:行者123 更新时间:2023-12-03 23:10:22 28 4
gpt4 key购买 nike

我在从 while 循环全局更新数组时遇到问题,如下所述。请注意,我只能使用 C 95 及之前版本的功能。任何帮助将不胜感激!满浆箱http://pastebin.com/ss6VgTCD

在我的程序顶部声明

int data_count, i;
float *x_values, *y_values;
float x[100],y[100];

在我的主函数中,我的数组是使用以下代码创建的:

printf("\nPlease Enter How Many Data Points You Wish To Enter: \n");
scanf("%d", &data_count);
x_values=(float*)calloc(data_count,sizeof(*x_values));
y_values=(float*)calloc(data_count,sizeof(*y_values));
if (x_values==NULL) {
printf("Error! Memory Could Not Be Allocated. ");
exit(0);
}

文件读取函数导入先前输入的数据,该函数正在获取正确的数据并在我的调试行中显示正确的数据点 printf("%12f%12f\n", x_values[i], y_values[ i]); 但是,仅在本地更新 x_valuesy_values,因为程序的其余部分看不到这些导入的数据。如何全局更新数组?

     void file_read(void) {
store = fopen ("j:/StoredValues.txt", "r");
if (store == NULL )
printf("\nError: Failed To Open Previous Data File - Program Will Continue Anyway\n");
else {
printf("\nSuccess: Data From Previous Run Imported\n");
i=0;
do {
fscanf ( store, "%f,%f\n", &x[i], &y[i]);
x_values = x;
y_values = y;
printf("%12f%12f\n", x_values[i], y_values[i]);
i=i+1;
} while (!feof(store));
fclose(store);
}
}

附:我只用 C 语言编写了 2 周的代码,所以简单就好:)

最佳答案

在第一个代码块中,您分配了内存并将指向它的指针保存在“x_values”中。在第二个 block 中,您将“x_values”更改为指向“x”数组。 “x”数组已分配有可容纳 100 个浮点值的内存。

分配后,您将不再有指向已分配内存的指针。存储在那里的任何数据都无法再访问,因为您不再有指向它的指针。

编辑:

这里是 file_read() 例程的建议替换:

void file_read(void) {
store = fopen ("j:/StoredValues.txt", "r");
if (store == NULL )
printf("\nError: Failed To Open Previous Data File - Program Will Continue Anyway\n");
else {
printf("\nSuccess: Data From Previous Run Imported\n");
float* px;
float* py;
px = x_values;
py = y_values;
while (!feof(store))
{
fscanf ( store, "%f,%f\n", px, py);
printf("%12f%12f\n", *px, *py );
px++;
py++;
}
fclose(store);
}
}

编辑2:

菜单选项2将显示x_values的内容。如果 file_read() 将内容放入 x 数组中,则无法使用选项 2 显示它。您也无法将 x 数组的内容复制到 x_values,因为 x_values 尚不存在。

在尝试读入数据之前,您需要为数据创建一个存储区域。为此,您需要存储文件中有多少个点的计数。

另请考虑:

用户输入 10 点,您为 10 点分配空间。然后用户想要输入新的数据,想要输入12。您现在必须使用 free() 和 alloc() 来为额外的两个获得空间。

关于C 数组行为 - 全局/局部/动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23544107/

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