回答編集履歴
6
あ
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
いいえ、違います。引数としては別に異なる長さの文字列2つでも良いです。たとえばs1とS2が全て等しい場合、S1の要素が\0の時、S2の要素も\0となり、その時は文字列数も同じで retuern 0
|
4
4
|
つまりstrcmpの文字列が等しいときの戻り値0になります。
|
5
|
-
しかし要素数が等しくない場合でも先にどちらかの文字終端\0がでてきた時点で*s1==*s2が満たせずwhile文を
|
5
|
+
しかし要素数が等しくない場合でも先にどちらかの文字終端\0がでてきた時点で*s1==*s2が満たせずwhile文をぬけるので問題なし
|
6
6
|
|
7
7
|
> ②最後のreturnでunsigned charにキャストしている理由がわかりません。
|
8
8
|
|
5
a
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
> ①*s1=='\0'が成り立つことでで二つの文字列が等しいとしていますが、これはs1とs2の要素数が同じであることを前提としているのですか?
|
2
2
|
|
3
|
-
いいえ、違います。引数としては別に異なる長さの文字列2つでも良いです。たとえばs1とS2が全て等しい場合、S1の要素が
|
3
|
+
いいえ、違います。引数としては別に異なる長さの文字列2つでも良いです。たとえばs1とS2が全て等しい場合、S1の要素が\0の時、S2の要素も\0となり、その時は文字列数も同じで retuern 0
|
4
4
|
つまりstrcmpの文字列が等しいときの戻り値0になります。
|
5
5
|
しかし要素数が等しくない場合でも先にどちらかの文字終端\0がでてきた時点で*s1==*s2が満たせずwhile文をぶけるので問題なし
|
6
6
|
|
4
補足
answer
CHANGED
@@ -13,4 +13,8 @@
|
|
13
13
|
たとえば(unsigned char)*s1 - (unsigned char)*s2が200の時
|
14
14
|
(signed char)*s1 - (signed char)*s2は−56になる(たぶん)
|
15
15
|
|
16
|
-
本来S1>S2として結果をかえしたいのに、S1<S2となってしまう。
|
16
|
+
本来S1>S2として結果をかえしたいのに、S1<S2となってしまう。
|
17
|
+
|
18
|
+
###補足
|
19
|
+
|
20
|
+
回答を終わって他の回答者様の回答の1の方をみてぎょっとしましたので、そこだけほそく、*S1==\0だけでS2のほうは評価していないのに、等しいと判断しているのはwhile文の*S1==*S2がなりたっているからで、それは要素数が同じ前提という事です、私が違いますといったのは、strcmpは2つの文字列が同じ要素数しか受け付けないわけではないという意味での「違います」です。
|
3
修正
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
いいえ、違います。引数としては別に異なる長さの文字列2つでも良いです。たとえばs1とS2が全て等しい場合、S1の要素が/0の時、S2の要素も/0となり、その時は文字列数も同じで retuern 0
|
4
4
|
つまりstrcmpの文字列が等しいときの戻り値0になります。
|
5
|
-
しかし要素数が等しくない場合でも先にどちらかの文字終端\0がでてきた時点でwhile文をぶけるので問題なし
|
5
|
+
しかし要素数が等しくない場合でも先にどちらかの文字終端\0がでてきた時点で*s1==*s2が満たせずwhile文をぶけるので問題なし
|
6
6
|
|
7
7
|
> ②最後のreturnでunsigned charにキャストしている理由がわかりません。
|
8
8
|
|
2
修正
answer
CHANGED
File without changes
|
1
修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
> ①*s1=='\0'が成り立つことでで二つの文字列が等しいとしていますが、これはs1とs2の要素数が同じであることを前提としているのですか?
|
2
2
|
|
3
|
-
いいえ、違います。たとえばs1とS2が全て等しい場合、S1の要素が/0の時、S2の要素も/0となり、retuern 0
|
3
|
+
いいえ、違います。引数としては別に異なる長さの文字列2つでも良いです。たとえばs1とS2が全て等しい場合、S1の要素が/0の時、S2の要素も/0となり、その時は文字列数も同じで retuern 0
|
4
4
|
つまりstrcmpの文字列が等しいときの戻り値0になります。
|
5
5
|
しかし要素数が等しくない場合でも先にどちらかの文字終端\0がでてきた時点でwhile文をぶけるので問題なし
|
6
6
|
|