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

当程序退出时 stdin 中仍有剩余时,C 和 Go 之间有什么区别

当程序退出时 stdin 中仍有剩余时,C 和 Go 之间有什么区别

Go
慕仙森 2023-03-07 11:42:51
主程序#include <stdio.h>int main() {    int k;    scanf("%d", &k);    return 0;}主程序package mainimport "fmt"func main() {    var n int    fmt.Scan(&n)}root@82da6559c1c0:/code# go run main.go 123x123root@82da6559c1c0:/code# 123bash: 123: command not foundroot@82da6559c1c0:/code# gcc main.c -o mainroot@82da6559c1c0:/code# ./main123x123root@82da6559c1c0:/code# 我想知道为什么在 Golang 中,123被插入到我的 bash 命令中。但在 C 中它没有?有什么不同吗?(我知道标准输入中还有一些字符)我想知道如何让 Golang 表现得像 C 一样?
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

默认情况下,stdin在 C 中缓冲,因此您scanf会导致更大的输入读取(进入缓冲区)。

在 Go 中,os.Stdin没有缓冲。如果您想获得与您在 C 程序中看到的相同的结果,您可以将 stdin 包装在 a 中bufio.Reader,尽管这是否与您正在使用的任何 C 标准库具有完全相同的行为将需要测试。


查看完整回答
反对 回复 2023-03-07
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

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