[英]initialising an array with the content of a text file in C
我编写了以下代码,以从文本文件中读取数据并将值存储在数组中。 我的代码未读取文件。
正在使用的库头
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <conio.h>
我的主要
int main()
{
FILE *fpoo;
float NumArr[5];
//我同样尝试过“ c:\\ Fly_u.txt”
fpoo= fopen ("Fly_u.txt","r");
if(fpoo!=NULL)
for (int i=0;i<6;i++)
{
fscanf(fpoo,"%d\n",NumArr[i]);
{
else
{
printf("me");
}
for (int i=0;i<6;i++)
{
printf("%f",NumArr[i]);
}
fclose(fpoo);
_getche();
return 0;
}
//文本文件的内容如下
0.99247
0.14727
-0.00041387
-1.737
0.20475
-0.052151
0.14755
-0.0233
-0.32606
0.092085
0.059199
-0.025587
0.0097565
0.13639
0.12007
fscanf()
的使用不正确:
float
格式说明符,它是%f
,而不是int
float
的地址(即float*
),而不是float
更改:
fscanf(fpoo,"%d\n",NumArr[i]);
至:
fscanf(fpoo,"%f\n", &NumArr[i]);
fscanf()
返回成功分配的数量,在这种情况下,应为1
。 推荐检查输入已成功读取,然后再尝试使用它们。
如果指定"Fly_u.txt"
作为文件名,则它必须与进程的工作目录位于同一目录中。 在构造路径时,请记住先保留'\\'
,或者仅使用'/'
(在Windows中也可以使用)。
由于数组索引从0
到N - 1
, for
循环将导致不确定的行为。 因此对于float NumArr[5];
有效索引为0, 1, 2, 3, 4
但两个for
循环的终止条件均为i < 6
,使用5
的索引:非法。 增大NumArr
的大小或调整for
循环的终止条件。
尝试这个
fscanf(fpoo,"%f\n",&NumArr[i]);
^ ^
^ ^
也就是说,传递要在其中存储数据的变量的地址。还要注意%f
而不是%d
。
您没有指定问题,但是如果从fopen
返回时遇到问题,请检查文件路径,然后尝试将完整路径传递给文件。 如@hmjd所说,您现在所做的假设是文件与可执行文件位于同一位置。
“我同样尝试过“ c:\\ Fly_u.txt””这是错误的,因为\\在C字符串中具有特殊含义。 您应该使用的是"c:\\\\Fly_u.txt"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.