• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++でcsvファイルから文字列を取得するのに)

C++でCSVファイルから文字列を取得する方法

このQ&Aのポイント
  • C++でCSVファイルから文字列を取得する方法についてのアドバイスをお願いします。
  • ファイルはオープンできているが、取得した文字列が正しく表示されない問題が発生しています。
  • csvdata_t構造体を使用してデータを格納し、loadData関数でデータを取得しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>void loadData(){ >    FILE *fp; >   fp = fopen(csvTitle,"r");//ここでのファイルパスは通っています >   int n,num,i; >       int input[1024]; >char inputc[1024]; inputc[]は「ローカル変数」で間違いないですかね? >switch(num){ >case 0: csvdata[n].Input = inputc;break; >case 1: csvdata[n].Output = inputc;break; >case 2: csvdata[n].AddName = inputc;break; >case 3: csvdata[n].Path = inputc;break; >case 4: csvdata[n].LED = inputc;break; >case 5: csvdata[n].VS = atoi(inputc);break; >case 6: csvdata[n].Title = inputc;break; >case 7: csvdata[n].Copy = inputc;break; >case 8: break; >} で、ローカル変数へのポインタを代入しているようですが… さて「ローカル変数」の寿命(有効期間)はいつまでだったか学習しましたか? # csvdata[n].VSだけポインタではなく数値の代入なので正しく動作するかと。 >どこのデータを表示させても"1aa"としか表示されません。 ただの偶然です。 不正終了してもまったく不思議のないコードになってます。 で、どのデータも同じアドレス指していますから、「どこのデータ」だろうが同じ動作します。 # ポインタに入っているアドレス確認してみましょうね。 >うまい具合にいくアドバイスがありましたらお願いします。 個別に、動的にメモリ確保して保持して下さい。 もちろん、不要になったら破棄して下さい。 malloc()/free()とかですね。

hamario1111
質問者

お礼

アドバイスありがとうございました。 頂いたアドバイスを元に試行錯誤の上、なんとか思い通りによみ込めるようになりました。