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

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

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?

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

答案1

得分: 5

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

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

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

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

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:

确定