回答編集履歴
1
質問者の疑問への対応を追記
test
CHANGED
@@ -73,3 +73,63 @@
|
|
73
73
|
```
|
74
74
|
|
75
75
|
このコードで理解できなところはどこですか?
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
**追記**
|
80
|
+
|
81
|
+
123ABCxyz123 と入力したら、main の buf には "123ABCxyz123" が入ります。
|
82
|
+
|
83
|
+
Function の text は main の buf を参照しますから、
|
84
|
+
|
85
|
+
text[0] = '1' text[1] = '2' text[2] = '3'
|
86
|
+
|
87
|
+
text[3] = 'A' text[4] = 'B' text[5] = 'C'
|
88
|
+
|
89
|
+
text[6] = 'x' text[7] = 'y' text[8] = 'z'
|
90
|
+
|
91
|
+
text[9] = '1' text[10] = '2' text[11] = '3' text[12] = '\0'
|
92
|
+
|
93
|
+
となります。'xyz' が入っているところはどこにもありません。
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
'x', 'y', 'z' の 3文字が並んで入っている
|
98
|
+
|
99
|
+
text[6], text[7], text[8] を見つけないといけません。
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
text[i]=='x' かつ text[i+1]=='y' かつ text[i+2]=='z' という
|
104
|
+
|
105
|
+
条件を調べるのは当然ではありませんか?
|
106
|
+
|
107
|
+
text[i]=='x' または text[i+1]=='y' または text[i+2]=='z' という
|
108
|
+
|
109
|
+
条件ではありませんよね。「かつ」「または」という表現をご存じないですか?
|
110
|
+
|
111
|
+
「かつ」は &&、「または」は || だから、&& を使うという発想が出てきます。
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
それから、&&演算子の意味ですが、
|
116
|
+
|
117
|
+
左オペランドが真なら、右オペランドを評価し、その真偽を結果とします
|
118
|
+
|
119
|
+
左オペランドが偽なら、右オペランドは評価せず、演算結果を偽とします。
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
if の条件が真なら、"xyz" が見つかったのですから、この次のところ
|
124
|
+
|
125
|
+
text[9] から探索を続けなければいけません。
|
126
|
+
|
127
|
+
今、i は 6 です。3つ進めたいのですが、for文に i++ があるので
|
128
|
+
|
129
|
+
ここでは、2つ進めておけば 3つ進みます。
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
else は if の条件が偽ですから、"xyz" は見つからなかったということになり
|
134
|
+
|
135
|
+
文字を詰めるために text[j] = text[i] を実行し、j を進めます。
|