首页 > 解决方案 > 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]);
 }

标签: cscanf

解决方案


推荐阅读