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

回答編集履歴

2

微修正

2017/01/06 14:38

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -1,6 +1,7 @@
1
1
  こんにちは。
2
2
 
3
+ argv[2]にはコマンドライン引数の文字列が格納されているメモリへのポインタが入っています。
3
- argv[2]にはコマンドライン引数をスペースで区切って分解した文字列が格納されているメモリへポインタが入っています。"0"や"1"はこれらの文字列定数が記録されているメモリへのポインタです。
4
+ 文字列定数の"0"や"1"はこれらの文字列が記録されているメモリへのポインタです。
4
5
 
5
6
  仮にargv[2]の指す先の文字列が"1"だったとしても、それが格納されているメモリは文字列定数"1"が記録されているメモリとは別ものですから、argv[2] == "1"がtrueになることは期待できません。
6
7
  int i=1, j=1;とした時、(i == j)ですが、(&i == &j)にならないのと同じ話です。

1

typo

2017/01/06 14:38

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -6,5 +6,5 @@
6
6
  int i=1, j=1;とした時、(i == j)ですが、(&i == &j)にならないのと同じ話です。
7
7
  ですので、xmodem_receive()が呼ばれることはありません。
8
8
 
9
- さて、せっかくC++を使うのでしたら、`std::string(argv[2]) == "0"`とすれば簡単に比較できます。
9
+ さて、せっかくC++を使うのでしたら、`std::string(argv[2]) == "1"`とすれば簡単に比較できます。
10
10
  C言語に対するC++の便利良さの最大の1つはstd::stringと思います。