Как напечатать большой не полностью заполненный массив только до последнего введенного int (в C)?

я используюint er[3001] . Я буду вводить данные пользователя, но маловероятно, что будет использоваться весь размер массива.

Вchar массив / строка, можно просто установить цикл тестированияarr[i] != \0 . Как достигается этот эффект дляint множество ?

Я предполагаю, что использование того же точного условия не сработает?

# arrays for-loop int printf
Источник
  • 4
    Вы должны отслеживать диапазон заполненных элементов с помощью другой переменной.
  • 0
    Как вы будете воспринимать вводимые пользователем данные? Я хочу написать ответ по этому поводу.
  • 0
    @MikeCAT На самом деле я конвертирую char arr в int arr, и, конечно, я ввожу char arr с помощью fgets ()
  • 2
    Обратите внимание, что вы можете использовать arr[i] != '\0' для строк, потому что «strings» в C - это имя для последовательности символов с завершающим нулем, но вы не можете использовать его для общего char как вы не можете сделать для общего int множество.
  • 1
    @MikeCAT А, понятно
Codelisting
за 3 против
Лучший ответ

I'm assuming using the same exact condition wont work ?

В этом вы правы, по умолчанию нет контрольного значения для обозначения конца целочисленного массива. Вам необходимо либо:

  • Следите за количеством успешно введенных элементов
  • Инициализируйте массив недопустимым значением (скажем,-1 , когда все ожидаемые входные данные неотрицательны) и переходят к первому недопустимому значению после ввода.
  • Используйте определяемое пользователем контрольное значение в самом вводе, чтобы отметить конец ввода.
  • 2
    @MikeCAT ваше предложение и этот ответ убедили меня просто использовать переменную для отслеживания количества входов
  • 0
    Сурав Гош и @MikeCAT Мне нужна помощь. Позже я хочу принять целочисленный ввод от пользователя в целочисленный массив с помощью scanf () {очень важно использовать scanf, так как значение будет заканчиваться пробелом} ... Без фактического ввода пользователем счетчика возможно ли чтобы создать цикл, который будет принимать столько входов, сколько дает пользователь (обычно цикл for / while будет иметь такое условие, как while i <= sizeof (arr) - я не могу его использовать, потому что я заранее не знаю, сколько целых чисел пользователь войдет, все, что я знаю, это то, что максимальное значение - 3001).
  • 0
    @JakeFry Какая помощь?
  • 0
    Извините, я был в середине написания комментария, теперь я его завершил
  • 0
    @JakeFry Похоже, вы хотите использовать сочетание подходов 1 и 3, сохранить счетчик и проверить что-то вроде while (input != -1 && count < 3001) , где -1 указывает на то, что у пользователя больше нет записей войти.
  • 0
    Извините, я не совсем понял этот Сурав ... Не могли бы вы объяснить, как это -1 будет работать?
  • 0
    @JakeFry Конечно. скажем, пользователю нужно ввести 10 , 20 , 30 и 40 Итак, пользователь вводит 10 , 20 , 30 , 40 и -1 . Последнее значение -1 введенное пользователем, пометит цикл как выполненный и завершит его.
  • 1
    О, я понял ... Я реализую оператор if в цикле for, который сломает его, если будет введено что-то, скажем -1! Понятно !
  • 0
    @JakeFry, если ответ Сурава был полезен (и я думаю, что да, поскольку они ответили также на дополнительный вопрос), подумайте о его принятии. ;)
Codelisting
Популярные категории
На заметку программисту