2017-04-06 5 views
0

配列をロードしようとしていて、配列内の項目(array_num)および配列内の0個所の値の場合は数値を出力しようとしています。私のコードはうまく動かず、なぜ私は不思議に思っています。どんな助けでも大歓迎です。入力ファイルがある:あなたのコードでテキストファイルの値を配列にロードする問題

 -1.000000 
 
     0.250000 
 
    -1.333333 
 
     0.484375 
 
     1.958333 
 
     3.119792 
 
     4.000000 
 
     4.630208 
 
     5.041667 
 
     5.265625 
 
     5.333333 
 
     5.276042 
 
     5.125000 
 
     4.911458 
 
     4.666667 
 
     4.421875 
 
     4.208333 
 
     4.057292 
 
     4.000000 
 
     4.067708 
 
     4.291667 
 
     4.703125 
 
     5.333333 
 
     6.213542 
 
     7.375000 
 
     8.848958 
 
    10.666667

#include <iostream> 
#include <stdio.h> 
#include <math.h> 
#include <ctype.h> 
#include <stdlib.h> 

//start of main code 
int main(void) 
{ 
    //declare variables 
    float x1, h; 
    int i, array_num; 
    float diff_arr[50]; 

    FILE*indiff; 
    indiff = fopen("indiff.txt","r"); 

    if (indiff == NULL) 
     printf("Error Opening File...\n"); 
    else{ 
     fscanf(indiff, "%f", &x1); 
     fscanf(indiff, "%f", &h); 

     //start while loop 
     while ((fscanf(indiff, "%f\n", &diff_arr[i])) == 1) 
     { 
      //fscanf(indiff, "%f\n",&diff_arr[load_array]); 
      array_num++; 
     } 
     /*for (load_array=0;load_array<=50;load_array++) 
     { 
      fscanf(indiff, "%f\n",&diff_arr[load_array]); 
      array_num++; 
     */} 
     printf("%f\n",diff_arr[0]); 
     printf("%i\n",array_num); 



    } 
+0

入力ファイルには何ですか? –

+7

'i'は決して初期化されて宣言されません。 –

+0

入力ファイルのサンプルを提供してもよろしいですか?@python_pirate – chbchb55

答えて

0

iarray_numどちらが初期化されることはありません!

int i, array_num;は宣言にすぎません!それ以外の場合は、常におそらく、ここでは0になります、私はあなたにもいくつかの点でiを進めたいと考えていint i=0, array_num=0;

にそれを修正:

while ((fscanf(indiff, "%f\n", &diff_arr[i++])) == 1)