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

go 语言相当于 scanf %[^\n]

go 语言相当于 scanf %[^\n]

Go
繁花如伊 2022-01-17 10:47:25
go语言fmt.Scanln("%s",&v)这应该将整行存储为 v 变量中的字符串,对..?但是当我打印时,我只得到第一个单词,而空格之后的所有内容都没有被捕获。
查看完整描述

2 回答

?
哈士奇WWW

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

Scan 系列函数扫描空格分隔的标记。


如果您阅读fmt文档,就会很明显为什么您只会得到输入的第一个单词。


Scan 扫描从标准输入读取的文本,将连续的空格分隔值存储到连续的参数中。换行符算作空格。它返回成功扫描的项目数。如果这小于参数的数量,则 err 将报告原因。


bufio.Scan 是你需要的。


// read standard input as a set of lines.

scanner := bufio.NewScanner(os.Stdin)

for scanner.Scan() {

        fmt.Println(scanner.Text()) // Println will add back the final '\n'

}


if err := scanner.Err(); err != nil {

        fmt.Fprintln(os.Stderr, "reading standard input:", err)

}


查看完整回答
反对 回复 2022-01-17
?
开满天机

TA贡献1786条经验 获得超13个赞

要阅读整行,您可以使用bufio包:


package main


import (

    "bufio"

    "fmt"

    "os"

)


func main() {

    r := bufio.NewReader(os.Stdin)

    str, _ := r.ReadString('\n')

    fmt.Println(str)

}


查看完整回答
反对 回复 2022-01-17
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

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