在Go中从标准输入扫描空格

huangapple go评论115阅读模式
英文:

scanning spaces from stdin in Go

问题

我正在尝试使用标准的"fmt"包从标准输入中扫描一些命令。

然而,似乎scanf在第一个空格后停止。你有什么办法可以解决这个问题吗?

var in string
for err != nil {
_, err = fmt.Scanf("%s", &in)
}
fmt.Println(in)

英文:

I'm trying to scan some commands from stdin using the standard "fmt" package

However it seems that scanf stops after the first space. Any idea how I can fix it?

  1. var in string
  2. for err != nil {
  3. _, err = fmt.Scanf("%s", &in)
  4. }
  5. fmt.Println(in)

答案1

得分: 5

我发现我需要的东西在bufio.Scan包中。

  1. scanner := bufio.NewScanner(os.Stdin)
  2. for scanner.Scan() {
  3. return scanner.Text()
  4. }
  5. if err := scanner.Err(); err != nil {
  6. fmt.Fprintln(os.Stderr, "读取标准输入时出错:", err)
  7. }
英文:

I found that what I needed was in the bufio.Scan package

  1. scanner := bufio.NewScanner(os.Stdin)
  2. for scanner.Scan() {
  3. return scanner.Text()
  4. }
  5. if err := scanner.Err(); err != nil {
  6. fmt.Fprintln(os.Stderr, "reading standard input:", err)
  7. }

huangapple
  • 本文由 发表于 2014年9月27日 14:04:32
  • 转载请务必保留本文链接:https://go.coder-hub.com/26071813.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定