テキストファイルからfscanfで値を1行ずつ取り込みたいのですが、読み込みが1行につき2行ずつ読み込まれます。
下記のコードに修正点がありましたら、ご指摘をお願いします。
main.c
1 #include<stdio.h> 2 #include<math.h> 3 4 int main(void){ 5 6 FILE *fp; 7 char word; 8 double digit[26]={0}, number=0, H=0, em=0; 9 int count=0, i=0, k=0, nu=0; 10 11 fp = fopen("fileone.txt", "r"); 12 13 while(fscanf(fp, "%c %d", &word, &nu) != EOF){ 14 if(k>25){ 15 break; 16 } 17 18 number = number + nu; 19 digit[k] = nu; 20 printf("%d %f %d\n", nu, digit[k], k); 21 k+=1; 22 } 23 fclose(fp); 24 25 printf("%f\n", number); 26 for(i=0; i<26; i++){ 27 em = digit[i]/number; 28 H = H - (em*log2(em)); 29 printf("em = %f H = %f\n", em, H); 30 } 31 32 printf("H = %f\n", H); 33 34 return 0; 35 }
fileone.txt
a 993 b 271 c 604 d 529 e 1811 f 381 g 409 h 520 i 1098 j 86 k 134 l 472 m 352 n 1028 o 1338 p 441 q 11 r 1173 s 751 t 1524 u 509 v 111 w 284 x 29 y 334 z 4
実行結果
993 993.000000 0 993 993.000000 1 271 271.000000 2 271 271.000000 3 604 604.000000 4 604 604.000000 5 529 529.000000 6 529 529.000000 7 1811 1811.000000 8 1811 1811.000000 9 381 381.000000 10 381 381.000000 11 409 409.000000 12 409 409.000000 13 520 520.000000 14 520 520.000000 15 1098 1098.000000 16 1098 1098.000000 17 86 86.000000 18 86 86.000000 19 134 134.000000 20 134 134.000000 21 472 472.000000 22 472 472.000000 23 352 352.000000 24 352 352.000000 25 15320.000000 em = 0.064817 H = 0.255865 em = 0.064817 H = 0.511729 em = 0.017689 H = 0.614698 em = 0.017689 H = 0.717667 em = 0.039426 H = 0.901577 em = 0.039426 H = 1.085486 em = 0.034530 H = 1.253164 em = 0.034530 H = 1.420842 em = 0.118211 H = 1.785000 em = 0.118211 H = 2.149157 em = 0.024869 H = 2.281698 em = 0.024869 H = 2.414239 em = 0.026697 H = 2.553790 em = 0.026697 H = 2.693340 em = 0.033943 H = 2.859006 em = 0.033943 H = 3.024671 em = 0.071671 H = 3.297198 em = 0.071671 H = 3.569725 em = 0.005614 H = 3.611697 em = 0.005614 H = 3.653669 em = 0.008747 H = 3.713470 em = 0.008747 H = 3.773272 em = 0.030809 H = 3.927950 em = 0.030809 H = 4.082628 em = 0.022977 H = 4.207706 em = 0.022977 H = 4.332783 H = 4.332783
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/27 01:37