
forループ内にif文があり,それがtrueであった場合,処理(処理1)後breakでforループを抜けます。ループが完結するまでif文に引っかからないでループを抜けた場合,別の処理(処理2)をしたいのです。しかし,処理1をした場合,処理2はしたくありません。しかし,breakで抜けた後でも処理2が実行されてしまいます。ループ内のif文がtrueの場合,フラグを立てておいて,ループを抜けたところで,そのフラグが立っていたら処理2をしないようにすればできますが,スマートではありません。何かスマートな方法はないものでしょうか。forループ以外のループを使ってもかまいませんが。
具体的には,文字列0がabc.jpgだったら,文字列1(フォルダー名)をNULL,文字列2(ファイル名)をabc.jpgとし,文字列0がc:\dir1\folder1\defgh.jpgだったら文字列1をc:\dir1\folder1\とし,文字列2をdefgh.jpgとする処理をしたいのです。
後ろから\を探していって,見つかったらそこで文字列を分け,最後まで見つからなかったら,文字列1をNULLとし,文字列2を元の文字列にするプログラムを考えました。
No.2
- 回答日時:
> フラグを立てておいて,
割と良くある、シンプルな方法だとは思いますが。
forループ内の処理のifが増えるとかした場合も対応しやすい冗長性があるとも言えますし。
> 後ろから\を探していって,
例えば、
for(i=len(文字列0); 0<=i; i--)
みたいなループでしょうか。
途中で\が見つからなかった、breakしなかったなら、iが-1になってるかどうかで判断とか。
なんか、気持ち悪い感じがするって人もいるかもですが。

No.1
- 回答日時:
処理1、処理2は、具体例では、どれに相当するのでしょうか?
tatsu99さん,コメントありがとうございました。
[処理1](forループ中で後ろから検索して\が見つかったので,下の処理をして処理2をスキップして先に進む)
文字列0がc:\dir1\folder1\defgh.jpgだったら文字列1をc:\dir1\folder1\とし,文字列2をdefgh.jpgとする処理
[処理2](forループ内で\が見つからなかったので,forループが完結された)
文字列0がabc.jpgだったら,文字列1(フォルダー名)をNULL,文字列2(ファイル名)をabc.jpgとする。
となります。教えていただきたかったのは,「この様にforループ中にif文があり,それを満足したら処理1だけをし,forループ中にif文が最後まで満足しなかった場合処理2だけを実行するスマートな方法」です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) vbaのループ処理について 6 2022/05/06 15:35
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のfor文の{}について
-
プログラミングの間違いを…
-
PIC 初歩プログラムについて
-
Excel VBAで年度をまたぐ期間の...
-
VBAで、35行3列の範囲を通し番...
-
C言語 数字を削除する関数
-
while文の条件
-
C言語でstaticを外すと正常な出...
-
while文の条件
-
プログラミングC#初心者
-
Range("A" & x) + Range("A" & ...
-
ループを途中で抜けたいのですが。
-
Delphiで・・・
-
在庫数が足りませんと出ます
-
制御に関するプログラム
-
c言語のフローチャートについて...
-
放電現象の2分法C言語プログラ...
-
c言語でAからZまでを表示する...
-
2÷3などの余りについて
-
「Aに対するBの割合」と「Aに対...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
do-while文が禁止される理由
-
入力した数値を倍々するプログラム
-
ループを途中で抜けたいのですが。
-
C言語forループが完結した場合...
-
break文でループを一気に抜ける...
-
C言語、whileループを抜け出す...
-
入力した文字列から母音だけを...
-
プログラムで関数は使わない方...
-
For文の終了値を関数にしても問...
-
Cプログラムが終了しない
-
if文の中にfor文なのか、for文...
-
他言語で言うcontinue文
-
文字列を後ろから1文字ずつ表示...
-
if文を使わずに奇数・偶数を判断
-
整定時間
-
for文while文の無限ループの違...
-
excel VBA if文について
-
n重のfor文にするには?
-
特定の文字列が出てくるまでの...
-
VBScriptでSQLに接続し、CSV出...
おすすめ情報
neko_deuxさん,コメントありがとうございました。
No.1のお礼に書いたような一般的な方法を知りたかったのです。実は,具体的な例につきましては,strrchr()を用いて自分では満足行くコードを書くことができました。
とにかく,forループ内にif文があり,ループの最後に至る前にif文を満足した場合は処理1だけを,ループの間,全くif文を満足しなかった場合処理2だけを実行する方法を知りたいのです。昔だったらgoto文を使っちゃいますがスマートではないですね。
for(…){
…
if(…){
処理1
goto A
}
…
}
処理2
(ラベルA)
すみません,No.1のところで,補足に書くべき所をお礼に書いてしまいました。下の補足に書きましたが,strrchrを使って具体例はすでに解決しています。ただ,forループ内のifを満足した時処理1のみ,ifを満足しないでループが完結した時,処理2のみ実行するスマートな方法を知りたいのです。
No.12さんの回答は,「フラグを立てなくても,breakで抜けたか,forループを完結したか判断できるよ」ということでしたか。