ここから本文です

C言語の繰り返し文の条件について

nga********さん

2020/7/618:10:04

C言語の繰り返し文の条件について

for文で文字列を1文字ずつインクリメントし終端文字か半角Qという文字が発見されるまで繰り返す、という条件文でfor文を回したいのですがサンプルソースをお願いしたいです。

if文でbreakするのではなくfor文の条件式のみで完結させたいです。

閲覧数:
37
回答数:
6
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

kapuseruさん

2020/7/618:26:44

Qか終端記号が来たら終了

Qでもなくて,終端記号でもなければ継続
と言い換えられるので,for文の条件部分にこれを書きます.

-------------------

#include<stdio.h>

int main(void){
char s[]="aaaaaQaa";
int i;
for(i=0;(s[i]!='Q' && s[i]!='\0');i++){
printf("%c", s[i]);
}
printf("\n");
return 0;
}

-------------------
結果:

aaaaa

質問した人からのコメント

2020/7/9 08:44:24

みなさんご丁寧にありがとうございます

ベストアンサー以外の回答

1〜5件/5件中

並び替え:回答日時の
新しい順
|古い順

roc********さん

2020/7/709:07:21

>「終端文字か半角Qという文字が発見されるまで繰り返す」

「〇〇かXX」は「どちらか一方でも成立したら」です
「〇〇まで繰り返す」という場合は「終了条件」になってます


「条件を複数組み合わせるのが難しい」ということでしょうか?

複数の条件の組み合わせ方はこれだけです
・どちらかの条件に合致すればいいなら、||
・どっちの条件にも合致しないとなら、&&

それともfor文の「継続条件」という書き方がイマイチ、ピンとこないということでしょうか?

そういう場合は「終了条件」を!(終了条件)と書くことで「継続条件」を書いたのと同じ意味になります


いずれにしろ思考停止する気ではないのなら、プログラムを組む前に「ベン図」や「真理値表」などについて勉強(お浚いかな?)した方がいいと思いますよ

mu54491102さん

2020/7/622:03:50

#include <stdio.h>
#include <stdlib.h>

int main(){
char* str = (char *)malloc(128);
scanf("%s" , str);
int i;
for( ; *str!='Q' && *str!='\0' ; ++str){
printf("%c" , str[0]);
}
free(str);
return 0;
}

こうですか?
なんかちょっとおかしいかな

rrh********さん

2020/7/619:43:24

if文を使わずfor文の条件式のみという事であれば

for文の構文的に繰り返し条件は真ん中部分に記述するので
for( ; 繰り返し条件; ) <-- こんな感じ

終了条件は、半角Qという文字で終了という事
==>半角Q以外は繰り返す

繰り返し条件の部分は、変数 != 'Q' という形

という事から、以下のようになると思います。
ちなみに文字列は全て半角文字という事であれば

char str[] = 'abcdef.....Q......';
for(char *p = str; *p != 'Q'; p++) {

}

2020/7/619:32:29

#include<stdio.h>

int main(void)
{

char moji[]="1234567Q90";
char *p;

for(p=moji;*p!=0 && *p!='Q';p++);

printf("%s\n",p);


return 0;
}

ループを脱出すると ポインタpにQのアドレスまたは終端文字のアドレスが収納されています。

2020/7/618:24:56

for(i=0;文字[i]!=null &&文字[i]!='q';i++)

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる