Go 代码错误分析:`fmt.Scanf` 使用错误及修复方法
这段代码出错的原因是在使用fmt.Scanf函数时,没有使用&符号来获取变量的地址。正确的写法应该是fmt.Scanf("%d", &m)。另外,由于使用了bufio.NewReader来读取输入,应该使用reader.ReadString('\n')来获取整行输入,而不是使用fmt.Scanf。以下是修复后的代码:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
l, _, _ := reader.ReadLine()
var t, n, s, m int
fmt.Sscanf(string(l), "%d", &t)
for i := 0; i < t; i++ {
l, _, _ = reader.ReadLine()
fmt.Sscanf(string(l), "%d%d", &n, &s)
for j := 0; j < n; j++ {
fmt.Fscanf(reader, "%d", &m)
s -= m
}
fmt.Println(s)
if s == 0 {
fmt.Println("YES")
} else {
fmt.Println("NO")
}
}
}
原文地址: https://www.cveoy.top/t/topic/pCAD 著作权归作者所有。请勿转载和采集!