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

回答編集履歴

1

加筆

2020/12/31 09:25

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -23,4 +23,10 @@
23
23
 
24
24
  return 0;
25
25
  }
26
- ```
26
+ ```
27
+
28
+ [公式リファレンス](https://docs.microsoft.com/ja-jp/cpp/c-runtime-library/format-specification-fields-scanf-and-wscanf-functions?view=msvc-160)曰く:
29
+
30
+ > 書式は左から右へ読み取られます。 **書式指定以外の文字は、入力ストリーム内の一連の文字列に一致するものと想定されます**。これらの文字は入力ストリーム内でスキャンされますが格納はされません。 **入力ストリーム内の文字が書式指定に合わないと、scanf 関数は終了し、その文字は読み取られなかったものとして入力ストリームに残ります**。
31
+
32
+ つまり書式中に '/' を書いてないのでデータ中の '/'は読み飛ばされずに %d すなわち int に変換しようとする。ところが '/'はintに変換できずに scanfはそこで失敗とする。2つめ以降が読み取れない理由はコレ。