-1

我在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]);
}
4

2 回答 2

2

您只需将 0 分配给读取的元素之后的元素scanf

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));
于 2013-04-16T13:24:40.210 回答
0
for(i=0;i<l;++i){
   scanf("\n%d ",&c[i]);
}

c[l] = 0;
于 2013-04-16T13:23:46.530 回答