文本文件包含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/