-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たのでOKです。iが配列のサイズより大きくないことを確認してくださいccしたがって、たとえば次のように定義されていると仮定します。

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 に答える