#include<stdio.h>
int main()
{
freopen("in.txt", "r", stdin);
int n, val, sum=0;
scanf("%d", &n);
for(int i=0; i<n; i++)
{
scanf("%d", &val);
sum += val;
}
printf("%d\n", sum);
}
输入( in.txt ):
5
1 2 3 4 5
输出:
15
在C语言中,程序会自动从 in.txt 文件中获取数据。我不需要在控制台中提供数据。
有没有办法以 GO 语言执行此操作?因此,我不需要手动提供大量数据或在代码中添加数据。
答案 0 :(得分:3)
您不需要仅从stdin扫描,直接打开文件。
fmt
包有一系列fmt.Fscan*
功能。
答案 1 :(得分:2)
您的C程序只是逐个扫描令牌。当然,在Go中有很多方法可以实现这一目标。我推荐bufio
包,但实际上你需要的只是一个读者,可以将字符串转换为int。下面是一个与您的C程序类似的示例。
import "bufio"
import "strconv"
file, err := os.Open("in.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
base := 0
if scanner.Scan() {
base += strconv.Atoi(scanner.Text())
}
scanner.Split(bufio.ScanWords)
for scanner.Scan() {
base += strconv.Atoi(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
fmt.Println(base)