Введите массив динамической длины в C, используя scanf - PullRequest
0 голосов
/ 21 января 2019

Я должен ввести массив целых чисел.Длина этого массива определяется во время выполнения, когда пользователь нажимает какой-нибудь часовой ключ (вероятно, я буду использовать return)

ПРИМЕР

//input path to be analyzed
  int n = 0;
  while(scanf("%d",&input[n])==1){
    //??
  }
}

Ввод:

3 21 3 4 5 (возврат)

Затем эти значения сохраняются в массиве a как:

[3, 2, 1, 3, 4, 5]

IТакже нужна правильная проверка ошибок, конечно.

Это основная проблема, но я не могу ее решить.

Спасибо!

Я думаю, что мне нужен цикл while, но я не уверен, как использовать scanf для завершения цикла, инициализации массива и ввода значений.

1 Ответ

0 голосов
/ 21 января 2019

Вы можете сделать это следующим образом:

int main()
{
    char ch;
    int i=0;
    int input[100000]; //Or dynamically allocate
    while(scanf("%c",&ch) && (ch!='\n')){
    if(ch==' ') continue;
    input[i++]=ch - '0';
    printf("%d ",input[(i-1)]);
}
}
...