猿问

如何使用 fmt 读取字符串。使用 bufio 在 Go 中读取一行后扫描?

我用 读一行,然后我用 读一个字符串。bufio.NewReader(os.Stdin)fmt.Scanf


package main


import (

    "fmt"

    "bufio"

    "os"

    )


func main() {

    reader := bufio.NewReader(os.Stdin)

    

    var str string

    inp, _ := reader.ReadString('\n')

    fmt.Scanf("%s", &str)

    

    fmt.Println(inp)

    fmt.Printf(str)

}

输入:


This is a sentence.

John

我希望输出如上所示,但事实并非如此。

输出:


This is a sentence.

实际上不起作用。

问题出在哪里?和如何修复它?fmt.Scanf("%s", &str)


蓝山帝景
浏览 100回答 1
1回答

肥皂起泡泡

读者。读字符串(delim) 读取所有内容,包括分隔符。因此,它在两个输入之间添加 \n。断续器Printf(str) 最后没有 \n,因此第二个输出粘附到打印到 stdout 的下一个内容。package mainimport (    "bufio"    "fmt"    "os")func main() {    reader := bufio.NewReader(os.Stdin)    var str string    inp, _ := reader.ReadString('\n')    fmt.Scanf("%s", &str)    fmt.Println(inp)    fmt.Printf(str)}输入:some lineJohn输出:some lineJohn下面是按所需运行的代码。   package mainimport (    "bufio"    "fmt"    "os")func main() {    reader := bufio.NewReader(os.Stdin)    var str string    inp, _ := reader.ReadString('\n')    fmt.Scanf("%s", &str)    fmt.Print(inp)    fmt.Printf("%s\n", str)}
随时随地看视频慕课网APP

相关分类

Go
我要回答