我在C中编写了一个简单的代码来练习动态数组,但是visual studio不能正常运行吗?它显示没有错误,似乎存储输入,但不打印。请帮助。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define SIZE 3
int main(void){
int *a = malloc(SIZE * sizeof(int));
int i;
if (a == NULL){
puts("not enough memory");
}
else{
for (i = 0; i < SIZE; i++){
printf("entry %d\n", i+1);
scanf("%d", &a[i]);
}
printf("printing\n");
for (i = 0; i < SIZE; i++){
printf("%d\n", a[i]);
}
free(a);
puts("press any key to exit...");
getchar();
return 0;
}
}
答案 0 :(得分:2)
scanf (最后)中未使用的换行符在最后 getchar 中使用。正如你所想,它并没有成为停止状态。
例如如下。
更改
scanf("%d", &a[i]);
到
scanf("%d%*c", &a[i]);//consumed newline every time
或
更改
getchar();
到
getchar();//consumed last newline for scanf
getchar();//wait for key stroke