質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

1895閲覧

C++において、bool文が真になるまで処理を繰り返す

muton

総合スコア31

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2019/07/01 10:06

編集2019/07/01 10:08

表題の通り、bool文が真になるまで処理を繰り返すコードを組みたいのですが、どのように組めば良いでしょうか。
現在以下のようなコードを考えたのですが、
エラーE0114:ラベル "LAST" が参照されましたが定義されていません
とのエラーが発生してしまいます

コードの内容としてはary[0]とary[1]が条件を満たしていればループを抜けるようなコードを書きたいです。
アドバイス頂けると嬉しいです。

コード

C++

1tTrkLocPos trkPos; 2RtTrackGlobal2Local(car->_trkPos.seg, atoi(car->ctrl.ary[0]), atoi(car->ctrl.ary[1]), &trkPos, TR_LPOS_MAIN); 3bool inside = fabs(trkPos.toMiddle) < trkPos.seg->width / 2; 4 if (inside) { 5 } 6 else { 7 int LAST; 8 9 char buff[256]; 10 _ApplicationPtr pXL; 11 HRESULT hr = pXL.CreateInstance(L"Excel.Application"); 12 pXL->Visible[0] = TRUE; //ウィンドウを表示 13 WorkbooksPtr pBooks = pXL->Workbooks; 14 _WorkbookPtr pBook = pBooks->Open("C:/Users/owner/Desktop/torcs-1.3.7/runtime/abc3.xlsm"); //マクロを含むブックを開く 15 variant_t macro = (_bstr_t)"abc3.xlsm!csv"; //実行マクロ名 16 pXL->Run(macro); 17 pBook->Close("C:/Users/owner/Desktop/torcs-1.3.7/runtime/abc3.xlsm"); //マクロを含むブックを閉じる 18 pBook.Release(); // COMオブジェクトを解放 19 pBooks.Release(); // COMオブジェクトを解放 20 pXL->Quit(); 21 pXL.Release(); // COMオブジェクトを解放 22 23 FILE *file1; 24 file1 = fopen("output.csv", "r"); 25 /*ファイルの終わりまで繰り返し読み込む*/ 26 while (fgets(car->ctrl.yy, 256, file1) != NULL) 27 { 28 car->ctrl.ary[0] = strtok(car->ctrl.yy, ","); 29 car->ctrl.ary[1] = strtok(NULL, ","); 30 } 31 fclose(file1); 32 33 tTrkLocPos trkPos; 34 RtTrackGlobal2Local(car->_trkPos.seg, atoi(car->ctrl.ary[0]), atoi(car->ctrl.ary[1]), &trkPos, TR_LPOS_MAIN); 35 bool inside = fabs(trkPos.toMiddle) < trkPos.seg->width / 2; 36 if (inside) { 37 } 38 else { 39 goto LAST; 40 }

使用環境

windows8.1/visual studio2017/C++

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

if文の代わりにwhile文を使って下さい。
goto文は熟慮に熟慮を重ねて使うべきです。むやみに使ってはいけません。

投稿2019/07/01 10:14

編集2019/07/01 10:15
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

gotoの飛び先はラベルでなければいけないのにそれがないぞ、ということです。「ラベル」について調べましたか?
調べると、ラベルというのは
シンボル : //コロン
と書くものだということがわかるはずです。私の手元では、'C言語 ラベル'でググるとC言語講座:gotoとlabelがヒットして、その中にちゃんと書いてありました。
もちろん、gotoを使う場面についてはとても慎重であるべき、というC言語のお約束があるので、今後は覚えておくほうがいいです。使うと、人非人扱いされることもあります。(誇張でなく...)

というか、そもそもbool文なんてものはありません。それは、bool型の変数を宣言して、初期値を与えているだけです。ラベルであるべきLASTも、変数として書いてしまっているのでエラーになりました。
「なんとなく動く」だけで誤魔化していて、文法をあまりに軽んじていませんか?

投稿2019/07/01 12:21

thkana

総合スコア7639

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

while文なりdo-while文なりを書けば良いのでは。
(コード内で使ってるのになぜこんな質問が…)

文法はググるなり入門書なりを読んで下さい。

投稿2019/07/01 10:12

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問