前提・実現したいこと
C++初心者です。
File()関数内で処理を行い、その後元のmain()関数内に戻ることができません。
元々存在しているプログラムに沿って書き直しを行っています。
そこまで大幅に変更していないのに上手くいきません。
何か解決策などあれば教えていただきたいです。
該当のソースコード
C++
1void main(void){ 2 int flag = 0; 3 DataRead dataread; 4 flag = dataread.File(); 5 std::cout << "flag:" << flag << std::endl; 6} 7 8int DataRead::File(){ 9 int num; 10 double a[2] = { 0 }; 11 //csvファイル内のデータを配列に格納する処理(ファイルオープンは別関数内でしている。問題なしです。) 12 fscanf_s(ファイル," %lf ,%lf ,%lf ¥n " ,a[0] ,a[1] ,a[2]); 13 14 if((a[0] == 0 && a[2] != 0) || (a[0] != 0 && a[2] == 0)) num = -1; 15 else if(a[0] != 0 && a[2] != 0) num = 1; 16 else num = 0; 17 18 aa = a[0]; 19 bb = a[1]; 20 cc = a[2]; 21 22 return num; 23} 24 25 26class DataRead{ 27 private: 28 double aa; 29 double bb; 30 double cc; 31 32 public 33 //getter,setterが存在(省略) 34} 35 36/* 37int DataRead::File(){ 38 int num; 39 double a[2] = { 0 }; 40 //csvファイル内のデータを配列に格納する処理(ファイルオープンは別関数内でしている。問題なしです。) 41 fscanf_s(ファイル," %lf ,%lf ,%lf ¥n " ,a[0] ,a[1] ,a[2]); 42 43 if((a[0] == 0 && a[2] != 0) || (a[0] != 0 && a[2] == 0)) return -1; 44 else if(a[0] != 0 && a[2] != 0) return 1; 45 46 aa = a[0]; 47 bb = a[1]; 48 cc = a[2]; 49 50 return 0; 51} 52*/ 53
実行自体はできますが、main関数内の std::cout << "flag:" << flag << std::endl; が表示されずに終了してしまいます。
試したこと
numには正しく値が入っていました。(それぞれの場合 -1,0,1)
コメントになっている int DataRead::File() のように num ではなく、return してしまう方法も試しましたが結果は同じでstd::cout << "flag:" << flag << std::endl; が表示されませんでした。
これで伝わるかすごく不安ですが、何か上手くいかない理由になりそうなことを教えていただければ嬉しいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/17 16:00
2020/06/17 16:03