⽂字列(最⼤ 100 ⽂字)s を読み込む。⽂字列 s の中から、'A'から始まり'z'で終わる部
分⽂字列(ここで、部分⽂字列中に'z'は末尾の 1 個しか含まれないものとする)を全て取
り出し、これらを 1 ⾏ずつ出⼒するプログラムを完成せよ。ここで、"movetoC"は、「⽂字
列へのポインタpt, ⽂字 c、⽂字列中に含まれる最初の⽂字 c の位置を保持する整数型ポ
インタpos を引数とし、⽂字列中に c が含まれる場合は 1 を、含まれない場合は 0 を返す
関数」である.
【⼊⼒】
1234A67z90A234zAzadfasA
【出⼒】
A67z
A234z
Az のように表示したいのですがうまく表示されないです。はしらせてエラーが起こらないためどこを変更すべきかが分かりません。
コード #include <stdio.h> int movetoC(char *pt, char c, int *pos) { while (*pt){ if(*pt=='\0') break; pt++; *pos=*pos+1; } if(*pt) return 1; else return 0; } int main(void){ char s[100]; int i=0, p1=0, p2, r1, r2; fgets(s,100,stdin); r1 = movetoC(&s[p1], 'A', &p1); while (r1) { p2 = p1; p1++; r2 = movetoC(&s[p1],'z',&p1); if(p2){ for (i=0; i<=p1-p2; i++) { printf("%c",&i); } p2++; }else{ break; } p1++; r1 = movetoC(&s[p1], 'A', &p1); } return 0; }
現在はどういう状況なのですか?
「何も表示されない」のか「想定外の出力結果が得られている」のか、そのどちらでもない状況でしょうか?
何も表示されないです
> 「⽂字列へのポインタ*pt, ⽂字 c、⽂字列中に含まれる最初の⽂字 c の位置を保持する整数型ポ
インタ*pos を引数とし、⽂字列中に c が含まれる場合は 1 を、含まれない場合は 0 を返す
関数」である.
「⽂字 c の位置を保持する整数型ポインタ」なんてものを与えることができるならば,「⽂字列中に c が含まれる」ことは自明.
おそらく説明がおかしい.
> 部分⽂字列中に'z'は末尾の 1 個しか含まれないものとする
'z' についてのみ言及されているということは, 'A' 側に関してはそういう条件が無いということでは?
であれば,
A67z90A234zAz
みたいなのも出力となるべきでは.
回答1件
あなたの回答
tips
プレビュー