int i=0, j; p = str; for (;;) { for (q = p, j = i; !(*q == '?' || *q == ':' || *q == 0); q++, j++); ch = *q; *q = 0; printf("|%s|\n", &str[i]); if (ch == 0) break; p = q + 1; i = j + 1; } }
j++おいて、j++の役割は何なのでしょうか?
デバッグを掛けてみましたがいまいちわからなくて。
また因子%sにおいて、
%sは文字を表すための因子ですが、ポインタなどで指定されたメモリからのアドレスからの文字コードなどのデータしか扱えないのでしょうか?
こちらが全体のコードです。
#include <stdio.h> #include <string.h> int main(void) { char str[] = "str == NULL ? \"(NULL)\" : str"; char* p, * q; int ch; int i=0, j; p = str; for (;;) { for (q = p, j = i; !(*q == '?' || *q == ':' || *q == 0); q++, j++); ch = *q; *q = 0; printf("|%s|\n", &str[i]); if (ch == 0) break; p = q + 1; i = j + 1; } }
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10238398115
以下ご対応ください。
https://teratail.com/help#posted-otherservice
逆に、何故わからないのでしょうか
いや、私もわかりません。これ j 要りますか?
何か重要な部分が省略されてる気がします。
察しました。
https://teratail.com/questions/319680#reply-444474
この回答のコードを劣化させたものですね。自分で書いたコードの意味がわからないという意味不明な質問です。
> また因子%sにおいて、
%sは文字を表すための因子ですが、
「因子」とは何ですか? どこからその用語を持ってきましたか?
%s は printf の書式文字列における変換指定です。
「文字を表す」という表現も不適切です。
>自分で書いたコードの意味がわからないという意味不明な質問です。
ずっとそんな感じですよね。
自分が書いたコードを他人に説明させるのってどういうことなの?と。
デバッグしても分からないって、デバッグできてないということに他ならない。
「デバッグ」って何かわかってます?そういう名前のお菓子ではないですよ。
追記された全体のコードを見ても j は不要ですね。使う意味がないのでこの意味を探る価値もありません。自分の書いたコードではなく、オリジナルの方を読んで理解してから変更するべきです。
回答3件
あなたの回答
tips
プレビュー