Fixed standard input error handling
This commit is contained in:
parent
18b1117749
commit
2dbd22114b
3 changed files with 25 additions and 12 deletions
|
@ -2,37 +2,42 @@ package pointer
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
var defaultInputLastChar *int = nil
|
||||
|
||||
func DefaultCharacterInput() int {
|
||||
func DefaultCharacterInput() (int, error) {
|
||||
if defaultInputLastChar != nil {
|
||||
c := *defaultInputLastChar
|
||||
defaultInputLastChar = nil
|
||||
return c
|
||||
return c, nil
|
||||
}
|
||||
b := make([]byte, 1)
|
||||
i, err := os.Stdin.Read(b)
|
||||
if err != nil {
|
||||
log.Fatalf("Error in DefaultCharacterInput { b: %c, i: %d, err: %+v }", b[0], i, err)
|
||||
return 0, fmt.Errorf("Error in DefaultCharacterInput { b: %c, i: %d, err: %w }", b[0], i, err)
|
||||
}
|
||||
return int(b[0])
|
||||
return int(b[0]), nil
|
||||
}
|
||||
|
||||
func DefaultDecimalInput() int {
|
||||
func DefaultDecimalInput() (int, error) {
|
||||
var v int
|
||||
for {
|
||||
c := DefaultCharacterInput()
|
||||
c, err := DefaultCharacterInput()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if c >= '0' && c <= '9' {
|
||||
v = c - '0'
|
||||
break
|
||||
}
|
||||
}
|
||||
for {
|
||||
c := DefaultCharacterInput()
|
||||
c, err := DefaultCharacterInput()
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
if c >= '0' && c <= '9' {
|
||||
v = v*10 + c - '0'
|
||||
} else {
|
||||
|
@ -40,7 +45,7 @@ func DefaultDecimalInput() int {
|
|||
break
|
||||
}
|
||||
}
|
||||
return v
|
||||
return v, nil
|
||||
}
|
||||
|
||||
func DefaultCharacterOutput(c int) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue