В C или C ++, как я могу дать вход в программу без ввода или пробела

0

Я хочу написать программу, в которой я дам ввод как 109876543, и программа рассчитает сумму, добавив каждую цифру в данный вход (1 + 0 + 9 + 8 + 7 + 6 + 5 + 4 + 3). поэтому как отделить эту цифру и добавить их и какой тип данных выбрать для хранения этого входа?

Теги:

3 ответа

3

Посмотрите на ncurses (вам также может понравиться запись в Википедии).
В Windows есть эквивалентные pdcurses.

Сохраните ввод в массиве символов (не обязательно строку).

1

[для C]

Переход на небуферизованный ввод-вывод:

  • Определите int чтобы удерживать сумму и инициализировать ее до 0.
  • Используйте select() чтобы проверить, есть ли что-то для чтения из fileno(stdin).
  • Используйте read() чтобы читать ровно один char.
  • Используйте isdigit() чтобы проверить, будет ли это число и если вычесть 48 и добавить результат к сумме.
  • Начать сначала.
  • 0
    Boost.ASIO более переносим, чем select .
  • 0
    Это низкоуровневый подход C. @rightfold
Показать ещё 2 комментария
-2

Вы можете сканировать один символ за раз, а затем превращать его в целое число по таблице ASCII. Scanf возвращает количество успешно введенных и назначенных элементов ввода. Код ASCII для 0 равен 48, для 1 - 49 и т.д.

char c;
int sum = 0;
while ((scanf("%c", &c) == 1) && (c != '\n')) {
    sum += (c-48);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню