如果输入数字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]);
}
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*ter 23
从scanf()循环中使用的格式字符串中删除尾随空格.
它会导致scanf()在读取int(%d)后丢弃所有空格,直到找到不是空格的内容.在循环的第五次迭代中,scanf()读取int并继续运行,直到找到非空白.这给出了需要读取一个整数的错觉.
在最后一次调用时scanf(),整数数据之后的任何非空格字符都将导致读取结束.
删除这里的空格:
这个:
scanf("%d ",&arr[i]);
^
Run Code Online (Sandbox Code Playgroud)
应该:
scanf("%d",&arr[i]);
Run Code Online (Sandbox Code Playgroud)