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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

840閲覧

ポインタによる配列渡し

fegeryh

総合スコア10

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/11/10 07:10

⽂字列(最⼤ 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; }

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

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

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

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

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

maisumakun

2021/11/10 07:13

現在はどういう状況なのですか? 「何も表示されない」のか「想定外の出力結果が得られている」のか、そのどちらでもない状況でしょうか?
fegeryh

2021/11/10 07:21

何も表示されないです
fana

2021/11/10 07:51

> 「⽂字列へのポインタ*pt, ⽂字 c、⽂字列中に含まれる最初の⽂字 c の位置を保持する整数型ポ インタ*pos を引数とし、⽂字列中に c が含まれる場合は 1 を、含まれない場合は 0 を返す 関数」である. 「⽂字 c の位置を保持する整数型ポインタ」なんてものを与えることができるならば,「⽂字列中に c が含まれる」ことは自明. おそらく説明がおかしい. > 部分⽂字列中に'z'は末尾の 1 個しか含まれないものとする 'z' についてのみ言及されているということは, 'A' 側に関してはそういう条件が無いということでは? であれば, A67z90A234zAz みたいなのも出力となるべきでは.
guest

回答1

0

ベストアンサー

C

1int movetoC(char *pt, char c, int *pos) { 2 while (*pt){ 3 if(*pt=='\0') break; 4 pt++; 5 *pos=*pos+1; 6 } 7 if(*pt) return 1; 8 else return 0; 9}

変数 c が使われていないので
「⽂字列中に c が含まれる場合は 1 を、含まれない場合は 0 を返す」を満たしません。

投稿2021/11/10 07:18

episteme

総合スコア16612

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問