2016-09-07 40 views
0

EDIT:コードブロックが編集されました。問題は文字列グリッドの各行に.csvファイルの最後の行のみが印刷されるようになりました。理由は何でしょうか?前もって感謝します。C++ BuilderのStringGridに.csvファイルを書き込むことができません

基本的には、プロジェクトの1つのモジュールがポイントのtoushandsで出力ファイルを作成し、以下に示すように、カンマ区切り形式で座標:

#pt,  x  ,  y  ,z  
124,4500003.833,3499999.500,0 
125,4500003.833,3499999.833,0 
126,4500003.833,3500000.167,0 

を別のモジュールとの.csvを読んでいる私は何をしようとしていますそれをStringGridに入れます。

FILE *coord; 

//some other things here 

while (fgets(line,100,DosyaGiris)!=NULL) { 

sscanf(line,"%d,%lf,%lf,%lf",&number,&x,&y,&z); 
     for (col = 0; col < 4; col++) { 

       StringGrid1->Cells[0][row] = IntToStr(number); 
       StringGrid1->Cells[1][row] = FloatToStr(x); 
       StringGrid1->Cells[2][row] = FloatToStr(y); 
       StringGrid1->Cells[3][row] = FloatToStr(z); 

     } 

} 

建設的で、良いものをお持ちください。

+0

正確には中心的な問題は何ですか?デバッグを試しますか? –

+0

Offtopic:あなたはC++を使用しているので、古いC one => 'FILE *'と関連する関数=>ではなく 'ifstream'に置き換えて、C++ライブラリを使用します。 'sscanf' =>' stringstream'; 'fgets' =>' std :: getline'; 'char *'または 'char []' => 'std :: string' – Garf365

+0

@ Garf365ええ、私はそれを知っています、ありがとう! – myhrra

答えて

0

これは不要なforループのために機能しませんでした。今は動作します。

 int i= 0; 
     while (fgets(line,100,DosyaGiris)!=NULL){ 
      sscanf(line,"%d,%lf,%lf,%lf",&ID,&x,&y,&z); 

       StringGrid1->Cells[0][i+1] = IntToStr(ID); 
       StringGrid1->Cells[1][i+1] = FloatToStr(x); 
       StringGrid1->Cells[2][i+1] = FloatToStr(y); 
       StringGrid1->Cells[3][i+1] = FloatToStr(z); 
       i++; 

     } 
関連する問題