在C编程中,如何读取文本文件并将其存储在数组中(值用逗号分隔)?
我需要帮助从txt文件中获取数据点、x和y值到两个数组。 目前,文本文件由5行组成,如: 0.116 0.118 0.12 0.122 0.124 这是我的代码:在C编程中,如何读取文本文件并将其存储在数组中(值用逗号分隔)?,c,arrays,C,Arrays,我需要帮助从txt文件中获取数据点、x和y值到两个数组。 目前,文本文件由5行组成,如: 0.116 0.118 0.12 0.122 0.124 这是我的代码: #include <stdio.h> #include <stdlib.h> main(void) { FILE *inp; /* pointer to input file */ double item; int cnt=0,y,d,i; double array[
#include <stdio.h>
#include <stdlib.h>
main(void)
{
FILE *inp; /* pointer to input file */
double item;
int cnt=0,y,d,i;
double array[300],swap;
/* Prepare files for input */
inp = fopen("testdoc.txt", "r");
/* Read each item */
while ( (fscanf(inp, "%lf", &item) == 1) && (!feof(inp)) ) {
array[cnt] = item;
cnt++;
}
for (int i = 0; i < cnt; i++)
{
printf("%lf\n",array[i]);
}
printf("The total number of inputs is %d",cnt);
fclose(inp); /* Close the files */
return (0);
}
#包括
#包括
主(空)
{
FILE*inp;/*指向输入文件的指针*/
双项目;
int cnt=0,y,d,i;
双数组[300],交换;
/*准备输入文件*/
inp=fopen(“testdoc.txt”,“r”);
/*阅读每一项*/
而((fscanf(inp,%lf,&item)==1)和(!feof(inp))){
数组[cnt]=项;
cnt++;
}
对于(int i=0;i
这只读取文件的前半部分,即x值。其中输出为
116000
118000
120000
122000
输入的总数为4
但是,我想读取一个文本文件,并将x和y值存储在两个不同的数组中。
新的文本文件如下所示
0.116,-0.84009
0.118,4.862
0.12,-1.0977
0.122,0.22946
0.124,3.3173
如何更改上面的代码以识别“,”符号后的Y值?要同时将这两个数组添加到两个数组中?我尝试编译发布在pastebin上的代码,但收到一个错误,因为您的while语句中缺少括号。 这很容易解决。 更大的问题是while循环的情况
fscanf
返回每次调用时转换和分配的输入项目数
当您修改代码以返回两个值时,while循环fscanf(inp、%lf、%lf、&v1、&v2)==1的条件将失败,循环将不会被输入
请将while语句修改为(已包含缺少的“(”太)
while((fscanf(inp,%lf,%lf,&v1,&v2)==2)和(!feof(inp)))
你应该很乐意去
此外,将int
的返回类型包含在main
函数中是一种很好的做法。使用fgets,然后将字符串拆分为数字,例如使用strok或sscanffscanf(inp、%lf、%lf、&v1、&v2)
@MarcoBonelli尝试添加fscanf(inp、%lf、%lf、&v1、&v2),但仍然得到编译错误,不确定什么是错误的请注意,while(!feof(fp))
总是错误的。feof()
在这里没有任何作用。只要最后一次调用fread()
没有失败,feof()
返回false