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

回答編集履歴

2

事例追加

2019/08/22 02:01

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -1,3 +1,24 @@
1
1
  if !sc.Scan()をfor sc.Scan()に変えて、sc.Text()のある行はループの中に入れましょう。
2
2
  空文字を渡しただけのつもりでも空文字とEOFの二つが渡されるので、二回以上スキャンしないと判定できません。
3
- また、エラーについてですが、正常でないかどうかはsc.Err()の値をチェックしましょう。
3
+ また、エラーについてですが、正常でないかどうかはsc.Err()の値をチェックしましょう。
4
+
5
+ ```go
6
+ package main
7
+
8
+ import (
9
+ "bufio"
10
+ "fmt"
11
+ "os"
12
+ )
13
+
14
+ func main() {
15
+ var sc = bufio.NewScanner(os.Stdin)
16
+ for sc.Scan() {
17
+ if err := sc.Err(); err != nil {
18
+ fmt.Println("正常に文字列を読み込めませんでした。")
19
+ os.Exit(1)
20
+ }
21
+ fmt.Println(sc.Text())
22
+ }
23
+ }
24
+ ```

1

エラーについて追記

2019/08/22 02:01

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -1,2 +1,3 @@
1
1
  if !sc.Scan()をfor sc.Scan()に変えて、sc.Text()のある行はループの中に入れましょう。
2
- 空文字を渡しただけのつもりでも空文字とEOFの二つが渡されるので、二回以上スキャンしないと判定できません。
2
+ 空文字を渡しただけのつもりでも空文字とEOFの二つが渡されるので、二回以上スキャンしないと判定できません。
3
+ また、エラーについてですが、正常でないかどうかはsc.Err()の値をチェックしましょう。