質問編集履歴

3

プログラム囲む

2016/05/14 17:07

投稿

k_37
k_37

スコア13

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- '''C
11
+ ```C
12
12
 
13
13
 
14
14
 
@@ -62,9 +62,7 @@
62
62
 
63
63
  }
64
64
 
65
-
66
-
67
- '''
65
+ ```
68
66
 
69
67
 
70
68
 
@@ -80,7 +78,7 @@
80
78
 
81
79
 
82
80
 
83
- '''C
81
+ ```c
84
82
 
85
83
  #include <stdio.h>
86
84
 
@@ -140,7 +138,7 @@
140
138
 
141
139
  }
142
140
 
143
- '''
141
+ ```
144
142
 
145
143
 
146
144
 

2

プログラムを囲む

2016/05/14 17:07

投稿

k_37
k_37

スコア13

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,12 @@
3
3
  ”苦しんで覚えるC言語”に記載されていたソースコードで、
4
4
 
5
5
  1つ疑問があります。
6
+
7
+
8
+
9
+
10
+
11
+ '''C
6
12
 
7
13
 
8
14
 
@@ -58,6 +64,10 @@
58
64
 
59
65
 
60
66
 
67
+ '''
68
+
69
+
70
+
61
71
  このプログラミングで、
62
72
 
63
73
  str1の入力がループ強制脱出のifに偽の時、ループの条件式(i = 0;i < len + 1;i++)によると、iは11でループが終了するということになるのと思うのですが、その後のif (i == len + 1)で真の結果がでることが理解できません。
@@ -69,6 +79,8 @@
69
79
  追記
70
80
 
71
81
 
82
+
83
+ '''C
72
84
 
73
85
  #include <stdio.h>
74
86
 
@@ -128,6 +140,8 @@
128
140
 
129
141
  }
130
142
 
143
+ '''
144
+
131
145
 
132
146
 
133
147
  iが12になるのか確認してみようとこのプログラムをしてみたのですが、やはり理解できませんでした。

1

変数の中身を確認してみたのですが\.\.\.

2016/05/14 17:00

投稿

k_37
k_37

スコア13

test CHANGED
File without changes
test CHANGED
@@ -63,3 +63,71 @@
63
63
  str1の入力がループ強制脱出のifに偽の時、ループの条件式(i = 0;i < len + 1;i++)によると、iは11でループが終了するということになるのと思うのですが、その後のif (i == len + 1)で真の結果がでることが理解できません。
64
64
 
65
65
  私の考えではループはiが11になったときに終了するので、iは11でlen + 1(11字+EOSで12)と等しくないと思うのですが、これはなぜiが12になるのでしょうか。
66
+
67
+
68
+
69
+ 追記
70
+
71
+
72
+
73
+ #include <stdio.h>
74
+
75
+ #include <string.h>
76
+
77
+
78
+
79
+ int main(void)
80
+
81
+ {
82
+
83
+ char str1[256],str2[] = "DRAGONQEST";
84
+
85
+ int i,len;
86
+
87
+
88
+
89
+ scanf("%s",str1);
90
+
91
+
92
+
93
+ len = strlen(str2);
94
+
95
+
96
+
97
+ printf("%d\n",len);
98
+
99
+
100
+
101
+ for (i = 0;i < len + 1;i++){
102
+
103
+ printf("str1[%d] = %c ,str2[%d] = %c\n",i,str1[i],i,str2[i]);
104
+
105
+ if (str1[i] != str2[i]) break;
106
+
107
+ }
108
+
109
+
110
+
111
+
112
+
113
+ printf("i(%d) == len + 1(%d)\n",i,len + 1);
114
+
115
+ if (i == len + 1) {
116
+
117
+ printf("同じ,i = %d ",i);
118
+
119
+ } else {
120
+
121
+ printf("違う,i = %d ",i);
122
+
123
+ }
124
+
125
+
126
+
127
+ return 0;
128
+
129
+ }
130
+
131
+
132
+
133
+ iが12になるのか確認してみようとこのプログラムをしてみたのですが、やはり理解できませんでした。