gpt4 book ai didi

c - 读取数据文件并保存到C中的数组

转载 作者:行者123 更新时间:2023-11-30 16:24:43 25 4
gpt4 key购买 nike

我目前正在使用 CodeBlocks 尝试从文件中读取 double 型数据并将其保存到数组中,到目前为止我已经成功做到了这一点。问题是,当我尝试将数据保存到数组中时,它 print 返回其他内容。

有为数组分配内存,并且代码似乎“ok”。但它并没有按计划进行。

这是我正在使用的代码。

读取文件:

-9.9

-8.8

-7.7

-6.6

-5.5

-4.4

-3.3

-2.2

-1.1

0.0

1.1

2.2

3.3

4.4

5.5

6.6

7.7

8.8

9.9

10.10

C - 代码:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 0; //Array Size
int j; //Loop index
double* allMags; //Memory Allocation Array; Set Later

//START SECTION OF CODE TO ACCESS DOCUMENT FILE
FILE* ReadFile = NULL; //File Pointer
double FileNumber; //Data Value Read From File "ReadFile"
//OPEN FILE
printf("Opening File: ReadFile.txt\n");
ReadFile = fopen("ReadFile.txt", "r");
//If file fails to open
if (ReadFile == NULL)
{
printf("File could not be opened: 'ReadFile.txt'\n");
return -1; // -1 indicates Error.
}
//END SECTION OF CODE TO ACCESS DOCUMENT FILE

//START READ DATA AND STORE ARRAY SIZE
printf("Reading and printing numbers.\n");
for (i = i + 1; !feof(ReadFile); i++)
{
fscanf(ReadFile, "%lf", &FileNumber);
printf("Entry #%d || Read: %.2lf\n", i, FileNumber);
}
fclose(ReadFile); //End File for this instance
printf("\nArray Size: %d\n", i);
//END READ DATA AND STORE ARRAY SIZE

//START MEMORY ALLOCATION
allMags = (double*)malloc(sizeof(int)*i);
if (allMags == NULL)
{
printf("Closing File: ReadFile.txt\n");
fclose(ReadFile); //Done with File, close it
printf("allMags is NULL\n");
return -1;
}
//END MEMORY ALLOCATION

//START SCAN AND PRINT FROM ARRAY -- allMags
while (j <= i)
{
fscanf(ReadFile, "%lf", &(allMags[j-1]));
j = j + 1;
}
fclose(ReadFile); //Close File
printf("\nSaved Data:\n");
printf("\n");
j = 1;

while (j < i)
{
printf("Index: %d || Saved Read: %.2f\n", j, allMags[j]);
j++;
}

return 0; //KILL
}

至于程序的执行,这就是我目前得到的(仍然不太明白出了什么问题)。

这就是控制台应用程序输出的样子

Console Output

最佳答案

好吧,我将以下视为问题,纠正它们并查看它是否有帮助。

J 未初始化,因此它会包含垃圾值,将其初始化为零可能会出现问题

J = 0;

当你存储 double 值时,为什么使用 sizeof int ?它需要是 sizeof(double) 如下所示

allMags = (double*)malloc(sizeof(double)*i); 

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

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