c - C scanf函数返回太多元素
问题描述
我有以下(代码在这里):
#include <stdio.h>
void print(char* m, int* a, int c){
printf("%s (%d els.)\n", m, c);
for(int i = 0; i < c; i++)
printf("%d ", a[i]);
printf("\n");
}
int main(void) {
int c = 0;
int a[50];
while(scanf("%d", &a[c++]) == 1);
print("Init array: ", a, c);
return 0;
}
然后有输入5 6 2 1 8 8 1
,我有以下输出:
Init array: (8 els.)
5 6 2 1 8 8 1 0
最后一个出自哪里0
?
解决方案
c++
in最后一次&a[c++]
增加了一个,所以在你输入元素之后,. 这就是为什么您的代码在您输入 7 个元素时显示的原因。碰巧是零。c
n
c == n + 1
(8 els.)
a[c - 1] == a[7]
推荐阅读
- rxjs - 当 Subject 有 0 个观察者时删除 Observable 订阅
- reactjs - ESLint 在结尾的变量上抛出“解析错误:意外的令牌:”:
- unity3d - Unity + Mapbox IFeaturePropertySettable 在从多边形生成的网格上?
- javascript - div自动宽度,创建动画
- jquery - JQuery查找并将类添加到元素
- css - 为什么 IE 和 Edge 会忽略整个 CSS 规则?
- java - PKIX 路径构建失败。我们应该导入证书吗?
- marklogic - 限制 cts:search 设置 xml 元素的数量
- python - 部署应用程序时使用 buildpack 中的 json.load() 出现 TypeError
- kubernetes - 使用 Consul 存储 kubernetes 容器的环境变量