为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
蓝山帝景 2022-10-04 19:52:22
我用 读一行,然后我用 读一个字符串。bufio.NewReader(os.Stdin)fmt.Scanfpackage mainimport (    "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)
查看完整描述

1 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

读者。读字符串(delim) 读取所有内容,包括分隔符。因此,它在两个输入之间添加 \n。断续器Printf(str) 最后没有 \n,因此第二个输出粘附到打印到 stdout 的下一个内容。


package main


import (

    "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 line

John

输出:


some line


John

下面是按所需运行的代码。


   package main


import (

    "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)

}

//img1.sycdn.imooc.com//633c1eb20001b91203230166.jpg

查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信