文本文件包含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函数,但这对两者都不起作用,并且为每个值打印出一个大的负数。我现在非常困难,没有想法。
答案 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();