0

実行時にサイズが決定される配列、つまりユーザー入力を作成したいと考えています。

私はこのようにそれをやろうとしました:

printf("enter the size of array \n");

scanf("%d",&n);

int a[n];

しかし、これはエラーになりました。

このような配列のサイズを設定するにはどうすればよいですか?

4

2 に答える 2

2

C99 (またはそれ以降) を使用していない限り、メモリを手動で割り当てる必要がありますcalloc()

int *a = calloc(n, sizeof(int)); // allocate memory for n ints
// here you can use a[i] for any 0 <= i < n
free(a); // release the memory

C99 準拠のコンパイラ (GCC with など) を使用している--std=c99場合、コードは正常に動作します。

> cat dynarray.c
#include <stdio.h>
int main() {
        printf("enter the size of array \n");
        int n, i;
        scanf("%d",&n);
        int a[n];
        for(i = 0; i < n; i++) a[i] = 1337;
        for(i = 0; i < n; i++) printf("%d ", a[i]);
}
> gcc --std=c99 -o dynarray dynarray.c
> ./dynarray
enter the size of array
2
1337 1337 
于 2012-06-02T09:27:59.587 に答える
0

コードを関数に含めstdio.h、宣言し、配置する必要があります。nそれ以外は、あなたがしたことはうまくいくはずです。

#include <stdio.h>

int main(void)
{
        int n;
        printf("enter the size of array \n");
        scanf("%d",&n);
        int a[n];
}
于 2012-06-02T09:31:16.650 に答える