Вы не можете этого сделать.Объявления переменных - это время компиляции задолго до того, как пользователь начинает взаимодействовать с программой (во время выполнения).Макросы также раскрываются во время компиляции.
Но когда у вас есть переменные с именами foo1
, foo2
, foo3
и т. Д., Почему бы просто не использовать вместо этого массив?Тогда вы можете иметь foo[0]
, foo[1]
, foo[2]
и т. Д.
В вашем случае применяются стандартные методы «динамического массива».Или используйте массив переменной длины:
int n = get_user_input_somehow();
int arr[n][10];
Или используйте традиционное динамическое выделение памяти:
int n = get_user_input_somehow();
int (*arr)[10] = malloc(n * sizeof *arr);
if (!arr) {
handle error
}
И не забудьте освободить память, когда закончите:
free(arr);
В любом случае вы можете использовать arr[i][j]
для доступа к элементам.