如何从文本文件中读取值并将它们存储在2个不同的数组中?

时间:2014-11-10 18:57:45

标签: c arrays input

文本文件包含52行,格式为:

A .013420
B .000191
C .011222
...

我想忽略这些字母,我需要从文件中提取值并将前26个存储在一个名为freqOne []的数组中,并将最后26个值存储在另一个名为freqTwo []的数组中。我稍后会使用这些值进行计算。 这是我的尝试:

#include <stdio.h>
#include <stdlib.h>

int main (){

   FILE *input1;
   /*char freqOne[26]; i use these arrays for attempt 1 
     char freqTwo[26];*/
   double freqOne[26];
   double freqTwo[26];


   input1 = fopen("test8.txt", "r");
   if(input1 == NULL){
      perror("test8.txt");
      exit(EXIT_FAILURE);
   }

   /* attempt one: all the values print out correctly but idk how to use them :(*/

   /*while(fgets(freqOne, sizeof(freqOne), input1)){
     printf("%s", freqOne);
     }
     while(fgets(freqTwo, sizeof(freqTwo), input1)){
     printf("%s", freqTwo);
     }
    */

   /*fclose(input1);    */

   int h;
   int i;
   /* another attempt i made, this one prints out the a large negative number for every element :(*/
   for(i=0; i<26; i++){
      fscanf(input1,"%lf", &freqOne[i]);
      printf("%lf\n", freqOne[i]);

   }
   for(h=0;h<26; h++){
      fscanf(input1,"%lf", &freqTwo[h]);
      printf("%lf\n", freqTwo[h]);

   }    
   fclose(input1);

   /*a = (freqOne[0]-freqTwo[0])*(freqOne[0]-freqTwo[0]);
     printf("%lf", a);*/
}

在我的第一次尝试中,我能够正确打印出所有值,但我不确定如何使用它们。我把它们打印成字符串,但是当我尝试将它们打印为%lf时,它给了我0%的每个值。 在我的第二次尝试中,我做了一些谷歌搜索,发现我应该尝试fscanf函数,但这对两者都不起作用,并且为每个值打印出一个大的负数。我现在非常困难,没有想法。

1 个答案:

答案 0 :(得分:0)

所以OP可以关闭这篇文章:

要忽略A,B,C等,请使用赋值抑制'*'

// fscanf(input1,"%lf", &freqOne[i]);
fscanf(input1,"%*s %lf", &freqOne[i]);

检查I / O功能结果总是一个好主意:

if (fscanf(input1,"%*s %lf", &freqOne[i]) != 1) Handle_Unexpected_Input();