用户输入的数组元素之和的问题

Problems with sum of user-inputted array elements

我想为我的 post 和代码中的冗长 post 和大部分无用的东西道歉,但我想尽可能清楚。

我的问题是一个非常基本的问题:

You are given an array of integers of size N. You need to print the sum of the elements of the array. The first line of the input consists of an integer N. The next line contains N space-separated integers describing the array.
Sample input:

5  
1000000001 1000000002 1000000003 1000000004 1000000005  

我通常使用 scanf 请求 n,然后执行:

for(i=0;i<n;i++)
  scanf("%d", &a[i]);  

但那是针对不同行的数字。
或者我可以做类似

的事情
scanf("%d %d %d", &a[0], &a[1], &a[2]);

但是我必须知道在程序执行之前会有多少个元素。

所以我在网上找到了一个函数,parseString,我用它来将每个数字作为一个字符串数组的元素,然后在我的主函数中将它们一个元素一个元素地转换成一个整数数组.

代码如下:http://imgur.com/erS0gYc

这似乎有效,但是在 www.hackerrank.com(一个非常大的数字)上提交问题时,出现了:

In file included from /usr/include/stdio.h:937:0,
                 from solution.c:3:
In function 'fgets',
    inlined from 'main' at solution.c:42:3:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:261:2: warning: call to '__fgets_chk_warn' declared with attribute warning: fgets called with bigger size than length of destination buffer
  return __fgets_chk_warn (__s, __bos (__s), __n, __stream);
  ^

我不完全理解 parseString 是如何工作的,但我已经知道可以使用它来将字符串数组转换为整数数组。
我了解 hackerrank 存在的问题是第一个 fgets 函数的缓冲区。

最后,我想知道最简单的方法是将 space 分隔的数字放入数组中。

非常感谢!

for(i=0;i'<'n;i++) // i<n should be there not '<'(as this wont work).
scanf("%d", &a[i]);  

在您按 enter 之前,这不会在单独的行上输入,您可以在数字之间按 space

看到输入的大小,您应该使用 longlong long

scanf("%d", &n);
for (i=0; i<n; i++) {
    scanf("%d", &x);
    sum += x;
}

不适合你?为什么?