Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C编程中,如何读取文本文件并将其存储在数组中(值用逗号分隔)?_C_Arrays - Fatal编程技术网

在C编程中,如何读取文本文件并将其存储在数组中(值用逗号分隔)?

在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[

我需要帮助从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[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或sscanf
fscanf(inp、%lf、%lf、&v1、&v2)
@MarcoBonelli尝试添加fscanf(inp、%lf、%lf、&v1、&v2),但仍然得到编译错误,不确定什么是错误的请注意,
while(!feof(fp))
总是错误的。
feof()
在这里没有任何作用。只要最后一次调用
fread()
没有失败,
feof()
返回
false