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



我想为我的帖子和代码中的冗长内容以及大部分无用内容道歉,但我希望尽可能清楚。

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

你会得到一个N大小的整数数组。你需要打印数组元素的总和。输入的第一行由一个整数N组成。下一行包含描述数组的N个空格分隔的整数
样本输入:

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,我用它把每个数字作为字符串数组的一个元素,然后在主函数中将它们逐元素转换为int数组。

这是代码:https://i.stack.imgur.com/ZYheV.jpg

这似乎是有效的,但当在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是如何工作的,但我已经到了可以使用它将字符串数组转换为int数组的地步
据我所知,hackerlink的问题在于第一个fgets函数的缓冲区。

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

非常感谢!

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

不适合你吗?为什么?

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

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

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

相关内容

  • 没有找到相关文章

最新更新