-1

各行に 3 つの異なる (float) 値を含む .csv ファイルを開くプログラムを実行しています。異なる変数の異なる値を分離したい。そのために、私はすでに strtod() 関数を使用しましたが、Visual Studio でのみ機能し、DAVE IDE (Eclipse ベース) では機能しません。次のコードもテストしましたが、まったく成功しませんでした(多くのゴミが認識され、必要なものは何も認識されません)。

f_read(&fil, &buff2[0], 25, &br);
f_close(&fil);

for (int y=0; y<25; y++){
    if ((buff2[y] == '\n') || (buff2[y] == '\r')){
        break;
    }
    else count++;
}

for (int y=0; y<count; y++){
  cut[y] = buff2[y];
}
for (int y=count; y<25; y++){
  cut[y] = NULL;
}


//token = strtok(cut, ";");

/* walk through other tokens */
/*while( token != NULL )
{
    array[j] = atof(token);
    token = strtok(NULL, ";");
    j++;
}*/


 for (int j = 0, ptr = cut; j < 3; ++j, ++ptr)
 {
        //array[j] = (float)strtof(ptr, &ptr);
        array[j] = (double)strtod(ptr, &ptr);
  }

コードのコメント部分は、私が行った他のテストですが、どれも機能しません。f_read() を使用した理由は、このライブラリしか使用できないためです: http://elm-chan.org/fsw/ff/00index_e.html

「カット」文字列の例は次のとおりです。

cut[0]  char    52 '4'  
cut[1]  char    46 '.'  
cut[2]  char    50 '2'  
cut[3]  char    49 '1'  
cut[4]  char    54 '6'  
cut[5]  char    59 ';'  
cut[6]  char    48 '0'  
cut[7]  char    59 ';'  
cut[8]  char    49 '1'  
cut[9]  char    48 '0'  
cut[10] char    48 '0'  
cut[11] char    0 '\0'  
cut[12] char    0 '\0'  
cut[13] char    0 '\0'  
cut[14] char    0 '\0'  
cut[15] char    0 '\0'  
cut[16] char    0 '\0'  
cut[17] char    0 '\0'  
cut[18] char    0 '\0'  
cut[19] char    0 '\0'  
cut[20] char    0 '\0'  
cut[21] char    0 '\0'  
cut[22] char    0 '\0'  
cut[23] char    0 '\0'  
cut[24] char    0 '\0'  

11 番目の要素の後には何もありませんが、これは単なる例であり、.csv ファイルの一部の行にはさらに数字が含まれているため、これは重要ではありません (ただし、同じ 3 つの変数があります)。

前もって感謝します。

編集:問題は解決しました!DAVE IDE は、インクルードでヘッダーをインクルードすることを好まないようです。main.c の先頭に #include を書かなければなりませんでした。

4

1 に答える 1