文本文件包含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函数,但这对任何一个都不起作用,并且每个值都打印出一个很大的负数。我现在很困,没有想法。

最佳答案

因此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();

关于c - 如何从文本文件中读取值并将其存储在2个不同的数组中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26850919/

10-11 00:22