回答編集履歴
3
微修正
test
CHANGED
@@ -2,9 +2,17 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
+
初期状態:
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
> str[] = "str == NULL ? \"(NULL)\": str"
|
10
|
+
|
11
|
+
char *p, *q; p = str; // p は str(の先頭)を指す
|
12
|
+
|
13
|
+
|
14
|
+
|
5
15
|
■ 一週目:
|
6
|
-
|
7
|
-
str[] = "str == NULL ? \"(NULL)\": str"
|
8
16
|
|
9
17
|
|
10
18
|
|
2
微修正
test
CHANGED
@@ -32,4 +32,6 @@
|
|
32
32
|
|
33
33
|
|
34
34
|
|
35
|
+
これ以降すなわち二週目以降、文字列は'\0'で終端されるため
|
36
|
+
|
35
|
-
|
37
|
+
printf("%s", str) で得られる出力は "str == NULL "
|
1
微修正
test
CHANGED
@@ -12,19 +12,19 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
これにより、q は'?',':','\0' のいずれかを指す位置
|
15
|
+
これにより、q は'?',':','\0' のいずれかを指す位置となる。
|
16
16
|
|
17
|
-
つまり "str == NULL **?** \"(NULL)\": str" の'?'を指す。
|
17
|
+
つまり qは "str == NULL **?** \"(NULL)\": str" の'?'を指す。
|
18
18
|
|
19
19
|
|
20
20
|
|
21
21
|
> ch = *q;
|
22
22
|
|
23
|
-
*q = 0;
|
23
|
+
***q = 0**;
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
これにより、'?' が '\0' に書き換えられる。
|
27
|
+
これにより、q の指す '?' が '\0' に書き換えられる。
|
28
28
|
|
29
29
|
|
30
30
|
|