実行時にサイズが決定される配列、つまりユーザー入力を作成したいと考えています。
私はこのようにそれをやろうとしました:
printf("enter the size of array \n");
scanf("%d",&n);
int a[n];
しかし、これはエラーになりました。
このような配列のサイズを設定するにはどうすればよいですか?
実行時にサイズが決定される配列、つまりユーザー入力を作成したいと考えています。
私はこのようにそれをやろうとしました:
printf("enter the size of array \n");
scanf("%d",&n);
int a[n];
しかし、これはエラーになりました。
このような配列のサイズを設定するにはどうすればよいですか?
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
コードを関数に含めstdio.h
、宣言し、配置する必要があります。n
それ以外は、あなたがしたことはうまくいくはずです。
#include <stdio.h>
int main(void)
{
int n;
printf("enter the size of array \n");
scanf("%d",&n);
int a[n];
}