c - scanf 接受的输入比预期的要多
问题描述
int *ptr = (int *) malloc(n*sizeof(int));
if(!ptr) exit(0);
for(int i=0;i<n;i++)
{
scanf("%d ",&ptr[i]);
}
最近我了解了工作 scanf ,其中提到如果格式说明符后面有空格,那么它只会读取空格或任何换行符并丢弃它。但是在上面的代码中,当n的值为 3 时,它需要输入 4 次,并将预期值分配给ptr的索引。有人可以解释为什么 scanf 在"%d"后面有空格时需要输入 4 次。
这是完整的代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
printf("Enter the number of terms\n");
scanf("%d",&n);
int *ptr = (int *) malloc(n*sizeof(int));
if(!ptr) exit(0);
for(int i=0;i<n;i++)
{
scanf("%d ",&ptr[i]);
}
printf("The entered numbers are:\n");
for(int i=0;i<n;i++)
{
printf("%d ",ptr[i]);
}
解决方案
推荐阅读
- docker - 将 Kibana 容器与 Elasticsearch 连接起来
- r - 当另一个变量的一个循环内的所有数字等于 NA 时删除行
- c# - .net core 2.0 JWT 令牌
- vue.js - 从 row.clicked 事件中获取行元素
- grafana - 如何通过外部来源丰富指标数据?
- r - 在R中将纪元转换为日期时区
- sql - MS SQL 使用联合获取的值对记录进行排序
- php - 是否可以避免未定义偏移 PHP 数组的警告?
- kotlin - 在 reduce() 中使用扩展函数引用
- javascript - 如果通过 es6-import 语法导入,SCSS 不能覆盖默认变量