- ベストアンサー
C++でCSVファイルから文字列を取得する方法
- C++でCSVファイルから文字列を取得する方法についてのアドバイスをお願いします。
- ファイルはオープンできているが、取得した文字列が正しく表示されない問題が発生しています。
- csvdata_t構造体を使用してデータを格納し、loadData関数でデータを取得しています。
- みんなの回答 (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()とかですね。
お礼
アドバイスありがとうございました。 頂いたアドバイスを元に試行錯誤の上、なんとか思い通りによみ込めるようになりました。