回答編集履歴
1
質問者の疑問への対応を追記
    
        answer	
    CHANGED
    
    | 
         @@ -35,4 +35,34 @@ 
     | 
|
| 
       35 
35 
     | 
    
         
             
            	text[j] = '\0';
         
     | 
| 
       36 
36 
     | 
    
         
             
            }
         
     | 
| 
       37 
37 
     | 
    
         
             
            ```
         
     | 
| 
       38 
     | 
    
         
            -
            このコードで理解できなところはどこですか?
         
     | 
| 
      
 38 
     | 
    
         
            +
            このコードで理解できなところはどこですか?
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            **追記**
         
     | 
| 
      
 41 
     | 
    
         
            +
            123ABCxyz123 と入力したら、main の buf には "123ABCxyz123" が入ります。
         
     | 
| 
      
 42 
     | 
    
         
            +
            Function の text は main の buf を参照しますから、
         
     | 
| 
      
 43 
     | 
    
         
            +
            text[0] = '1' text[1] = '2' text[2] = '3'
         
     | 
| 
      
 44 
     | 
    
         
            +
            text[3] = 'A' text[4] = 'B' text[5] = 'C'
         
     | 
| 
      
 45 
     | 
    
         
            +
            text[6] = 'x' text[7] = 'y' text[8] = 'z'
         
     | 
| 
      
 46 
     | 
    
         
            +
            text[9] = '1' text[10] = '2' text[11] = '3' text[12] = '\0'
         
     | 
| 
      
 47 
     | 
    
         
            +
            となります。'xyz' が入っているところはどこにもありません。
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            'x', 'y', 'z' の 3文字が並んで入っている
         
     | 
| 
      
 50 
     | 
    
         
            +
            text[6], text[7], text[8] を見つけないといけません。
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            text[i]=='x' かつ text[i+1]=='y' かつ text[i+2]=='z' という
         
     | 
| 
      
 53 
     | 
    
         
            +
            条件を調べるのは当然ではありませんか?
         
     | 
| 
      
 54 
     | 
    
         
            +
            text[i]=='x' または text[i+1]=='y' または text[i+2]=='z' という
         
     | 
| 
      
 55 
     | 
    
         
            +
            条件ではありませんよね。「かつ」「または」という表現をご存じないですか?
         
     | 
| 
      
 56 
     | 
    
         
            +
            「かつ」は &&、「または」は || だから、&& を使うという発想が出てきます。
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            それから、&&演算子の意味ですが、
         
     | 
| 
      
 59 
     | 
    
         
            +
            左オペランドが真なら、右オペランドを評価し、その真偽を結果とします
         
     | 
| 
      
 60 
     | 
    
         
            +
            左オペランドが偽なら、右オペランドは評価せず、演算結果を偽とします。
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            if の条件が真なら、"xyz" が見つかったのですから、この次のところ
         
     | 
| 
      
 63 
     | 
    
         
            +
            text[9] から探索を続けなければいけません。
         
     | 
| 
      
 64 
     | 
    
         
            +
            今、i は 6 です。3つ進めたいのですが、for文に i++ があるので
         
     | 
| 
      
 65 
     | 
    
         
            +
            ここでは、2つ進めておけば 3つ進みます。
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            else は if の条件が偽ですから、"xyz" は見つからなかったということになり
         
     | 
| 
      
 68 
     | 
    
         
            +
            文字を詰めるために text[j] = text[i] を実行し、j を進めます。
         
     |