• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字列とポインタの問題です。)

文字列とポインタの問題について

このQ&Aのポイント
  • C言語のプログラムにおいて、文字列とポインタを扱う問題についての質問です。
  • プログラム中のif文の動作が分からず困っています。
  • プログラムの答えが3になる理由について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • xi_fjw_ix
  • ベストアンサー率100% (2/2)
回答No.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になります。

aoilove21
質問者

お礼

分かりやすい回答ありがとうございます^^ ちゃんと理解することできました。 ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「if文の動作」はわかりますか?

aoilove21
質問者

補足

このプログラムだと、*sがtになったらj++をして、それ以外だったらs++するで合ってますよね? s++は文字列を1個づらすってことだと思うのですけど、j++は何をしてるんですか?

関連するQ&A