teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

プログラム囲む

2016/05/14 17:07

投稿

k_37
k_37

スコア13

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
  1つ疑問があります。
4
4
 
5
5
 
6
- '''C
6
+ ```C
7
7
 
8
8
  #include <stdio.h>
9
9
  #include <string.h>
@@ -30,16 +30,15 @@
30
30
 
31
31
  return 0;
32
32
  }
33
+ ```
33
34
 
34
- '''
35
-
36
35
  このプログラミングで、
37
36
  str1の入力がループ強制脱出のifに偽の時、ループの条件式(i = 0;i < len + 1;i++)によると、iは11でループが終了するということになるのと思うのですが、その後のif (i == len + 1)で真の結果がでることが理解できません。
38
37
  私の考えではループはiが11になったときに終了するので、iは11でlen + 1(11字+EOSで12)と等しくないと思うのですが、これはなぜiが12になるのでしょうか。
39
38
 
40
39
  追記
41
40
 
42
- '''C
41
+ ```c
43
42
  #include <stdio.h>
44
43
  #include <string.h>
45
44
 
@@ -69,6 +68,6 @@
69
68
 
70
69
  return 0;
71
70
  }
72
- '''
71
+ ```
73
72
 
74
73
  iが12になるのか確認してみようとこのプログラムをしてみたのですが、やはり理解できませんでした。

2

プログラムを囲む

2016/05/14 17:07

投稿

k_37
k_37

スコア13

title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,9 @@
2
2
  ”苦しんで覚えるC言語”に記載されていたソースコードで、
3
3
  1つ疑問があります。
4
4
 
5
+
6
+ '''C
7
+
5
8
  #include <stdio.h>
6
9
  #include <string.h>
7
10
 
@@ -28,12 +31,15 @@
28
31
  return 0;
29
32
  }
30
33
 
34
+ '''
35
+
31
36
  このプログラミングで、
32
37
  str1の入力がループ強制脱出のifに偽の時、ループの条件式(i = 0;i < len + 1;i++)によると、iは11でループが終了するということになるのと思うのですが、その後のif (i == len + 1)で真の結果がでることが理解できません。
33
38
  私の考えではループはiが11になったときに終了するので、iは11でlen + 1(11字+EOSで12)と等しくないと思うのですが、これはなぜiが12になるのでしょうか。
34
39
 
35
40
  追記
36
41
 
42
+ '''C
37
43
  #include <stdio.h>
38
44
  #include <string.h>
39
45
 
@@ -63,5 +69,6 @@
63
69
 
64
70
  return 0;
65
71
  }
72
+ '''
66
73
 
67
74
  iが12になるのか確認してみようとこのプログラムをしてみたのですが、やはり理解できませんでした。

1

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

2016/05/14 17:00

投稿

k_37
k_37

スコア13

title CHANGED
File without changes
body CHANGED
@@ -30,4 +30,38 @@
30
30
 
31
31
  このプログラミングで、
32
32
  str1の入力がループ強制脱出のifに偽の時、ループの条件式(i = 0;i < len + 1;i++)によると、iは11でループが終了するということになるのと思うのですが、その後のif (i == len + 1)で真の結果がでることが理解できません。
33
- 私の考えではループはiが11になったときに終了するので、iは11でlen + 1(11字+EOSで12)と等しくないと思うのですが、これはなぜiが12になるのでしょうか。
33
+ 私の考えではループはiが11になったときに終了するので、iは11でlen + 1(11字+EOSで12)と等しくないと思うのですが、これはなぜiが12になるのでしょうか。
34
+
35
+ 追記
36
+
37
+ #include <stdio.h>
38
+ #include <string.h>
39
+
40
+ int main(void)
41
+ {
42
+ char str1[256],str2[] = "DRAGONQEST";
43
+ int i,len;
44
+
45
+ scanf("%s",str1);
46
+
47
+ len = strlen(str2);
48
+
49
+ printf("%d\n",len);
50
+
51
+ for (i = 0;i < len + 1;i++){
52
+ printf("str1[%d] = %c ,str2[%d] = %c\n",i,str1[i],i,str2[i]);
53
+ if (str1[i] != str2[i]) break;
54
+ }
55
+
56
+
57
+ printf("i(%d) == len + 1(%d)\n",i,len + 1);
58
+ if (i == len + 1) {
59
+ printf("同じ,i = %d ",i);
60
+ } else {
61
+ printf("違う,i = %d ",i);
62
+ }
63
+
64
+ return 0;
65
+ }
66
+
67
+ iが12になるのか確認してみようとこのプログラムをしてみたのですが、やはり理解できませんでした。