我在c中做了一个小程序,一切都运行得很好但是在一个过程中我必须为数组分配一些值,但我希望最后一个值自动为0
printf("cantidad de valores codificados a ingresar "); /*amount of values to enter*/
scanf("%d",&l);
printf("\ningrese los valores a decodificar: "); /*entering values*/
for(i=0;i<l;++i) {
scanf("\n%d ",&c[i]);
}
答案 0 :(得分:2)
您需要在scanf
读取的元素之后为元素指定0:
for(i=0;i<l;++i) {
scanf("%d",&c[i]);
}
c[i] = 0;
你已经在循环之前声明了i
,所以没关系。确保i
不大于数组c
的大小。因此,假设c
被定义为,例如:
int c[100];
在您读入l
的值后,您应该检查它是否不大于数组的大小:
scanf("%d",&l);
if (l + 1 > sizeof(c) / sizeof(int)) // one extra for the 0
{
fprintf(stderr, "Too many values, I don't have this much space...");
exit(1);
}
但最好动态分配数组c
:
scanf("%d",&l);
int* c = (int*) malloc(sizeof(int) * (l + 1));
答案 1 :(得分:0)
for(i=0;i<l;++i){
scanf("\n%d ",&c[i]);
}
c[l] = 0;