- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字列とポインタの問題です。)
文字列とポインタの問題について
このQ&Aのポイント
- C言語のプログラムにおいて、文字列とポインタを扱う問題についての質問です。
- プログラム中のif文の動作が分からず困っています。
- プログラムの答えが3になる理由について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「aoilove21さん」はじめまして、こんばんは。 > このプログラムだと、*sがtになったらj++をして、それ以外だったらs++するで > 合ってますよね? ちょっと違います。 「*sがtになったら、j++をして」は、合っています。 「それ以外だったら、s++する」は、「*sがtになっても、*sがtにならなくてもs++する」が正しいです。「必ず、s++は行われます。」 「*sがtになったらj++をして、それ以外だったらs++する」だと、次のようになります。 int f(char *s){ int j = 0; while(*s != '\0'){ if(*s == 't'){ j++; }else{ s++; } } return j; } > s++は文字列を1個づらすってことだと思うのですけど、 > j++は何をしてるんですか? 「j++」は「*s=='t'」の場合に実行されるので、文字列"nasida Institute of Technology"の't'をカウントしていることになります。 だから、答えが3になります。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
「if文の動作」はわかりますか?
質問者
補足
このプログラムだと、*sがtになったらj++をして、それ以外だったらs++するで合ってますよね? s++は文字列を1個づらすってことだと思うのですけど、j++は何をしてるんですか?
お礼
分かりやすい回答ありがとうございます^^ ちゃんと理解することできました。 ありがとうございました。