2017-02-27 17 views
0

を取得しようとすると、私は(それは3Dグラフィックエディタ.vox形式の出力です)この形式のデータのフルテキストファイルを持っている...配列にファイルを解析しますが、余分な数字

6 -13 8 eeeeec 
13 -13 8 eeeeec 
6 -12 8 eeeeec 
6 -11 8 eeeeec 
6 -10 8 eeeeec 
1 -9 8 eeeeec 
2 -9 8 eeeeec 
3 -9 8 eeeeec 

6 -13 8 0 13 -13 8 0 6 -12 8 0 6 -11 8 0 6 -10 8 0 1 -9 8 0 2 -9 8 0 3 -9 8 0 
:私は次のようにしかし、出力は余分なゼロ年代の-間の3桁の数字を持っている...配列に整数を解析する

#include<stdio.h> 

int array[10000]; 
char *p; 

    int main() 
    { 
      FILE *ptr_file; 
      char buf[10]; 

      ptr_file =fopen("AntAttackMap.txt","r"); 
      if (!ptr_file) 
       return 1; 

      long index = 0; 

      while (fgets(buf,10, ptr_file)!=NULL) 
      { 
       p = strtok(buf, " ec"); 

       while (p != NULL) 
       { 

       int num = atoi(p); 
       array[index]=num; 
       printf ("%d ",num); 
       p = strtok (NULL, " ec"); 
       if (p != NULL) index++; 
       } 
      } 

     fclose(ptr_file); 
     printf("TOTAL %d, ",index); 
      return 0; 
    } 

を次のコードを使用しています10

誰かがなぜ私は余分な数字を取得している理由を説明してくださいできますか?事前に

おかげで、

マイク

+3

'' ec "' - "' ec \ n "' – BLUEPIXY

+2

あなたのバッファサイズ '10'は' 13 -13 8eeeeec'を保持するのに十分な大きさではありません。実用的なサイズを使用してください - おそらく4096、おそらく1024または256だけです。 –

+0

問題は何だったのBLUEPIXYありがとう。 –

答えて

0

あなたは定数BUFSIZを使用することができ、 例

char buf[BUFSIZ]; 
0

は整数を解析するためatoiを使用しないでください。唯一の信頼できる方法はstrtoulです。その後、エラーチェックをコードに追加してください。

関連する問題