循环运行的次数超过了C中指定的次数?为什么?

循环运行的次数超过了C中指定的次数?为什么?,c,loops,scanf,C,Loops,Scanf,如果我输入数字5,这个循环必须运行5次,但它正在运行6次。有什么问题 int main(){ int i, *arr, size; printf("Please enter the Number: "); scanf("%d ",&size); arr = (int*) malloc(size * sizeof(int)); for(i = 0; i < size; i++){

如果我输入数字5,这个循环必须运行5次,但它正在运行6次。有什么问题

 int main(){
        int i, *arr, size;
        printf("Please enter the Number: ");
        scanf("%d ",&size);
        arr = (int*) malloc(size * sizeof(int));
        for(i = 0; i < size; i++){
            scanf("%d ", &arr[i]);
        }
 }
intmain(){
int i,*arr,尺寸;
printf(“请输入数字:”);
scanf(“%d”,大小(&S);
arr=(int*)malloc(size*sizeof(int));
对于(i=0;i
删除此处的空格:

这:

应该是:

 scanf("%d",&arr[i]);

我也面临着类似的问题。要使其完美,请删除 循环中%d后的空格。它应该会起作用。可能是
scanf
的某些属性

int main(){
        int i, *arr, size;
        printf("Please enter the Number: ");
        scanf("%d",&size);// Note the change here
        arr= (int*) malloc(size * sizeof(int));
        for(i= 0;i < size;i++){ 
            scanf("%d",&arr[i]);
        }
    }
intmain(){
int i,*arr,尺寸;
printf(“请输入数字:”);
scanf(“%d”,&size);//注意此处的更改
arr=(int*)malloc(size*sizeof(int));
对于(i=0;i
从循环中使用的
scanf()
格式字符串中删除尾随空格

它使scanf()在读取
int
%d
)后丢弃所有空白,直到找到非空白的内容。在循环的第五次迭代中,
scanf()
读取
int
,并一直执行,直到找到非空白。这会产生一种错觉,即需要再读取一个整数


在最后一次调用
scanf()
时,整数数据后面的任何非空白字符都将导致读取结束

是否检查循环之前的大小值?请尝试删除循环扫描中%d之后的空间。是,它正在工作。但是问题是什么呢?它与哪一个相关,这是相当复杂的。暂时不用麻烦了。请你把资料来源给我好让我去看看吗?“我很想知道这件事。”迈克尔说Walz@Muralikrishna
*scanf
格式字符串中的空白字符指示
*scanf
读取并丢弃任意数量的空白字符(如果有),直到第一个非空白字符。因此,在第五次迭代之后,您的
scanf
,将等待一个非空白字符,如上面粗体部分所示。@Muralikrishna在我之前的评论中单击“scanf”。这将为scanf的完整文档打开一页。但问题是什么?你能解释一下吗?@酷家伙,有人编辑了代码。现在它是正确的。
int main(){
        int i, *arr, size;
        printf("Please enter the Number: ");
        scanf("%d",&size);// Note the change here
        arr= (int*) malloc(size * sizeof(int));
        for(i= 0;i < size;i++){ 
            scanf("%d",&arr[i]);
        }
    }