Разделить число на цифры

Например, дано число 123456789, нужно разделить его на отдельные цифры, 1, 2, 3, 4, 5, 6, 7, 8, 9, чтобы их потом можно было бы присвоить к какой-то переменной. И как называется сам этот процесс, чтобы поподробнее прочитать про эту функцию потом.

9 ответов 9

Если честно, то мне трудно понять смысл этих строчек:

Вот тут я запутываюсь, а точнее в форматах ( % ).

Кратко описываю непонятные Вам места с форматами. Подробно можно прочитать в man 3 fprintf.

Функции семейства printf ( sprintf() , fprintf() и другие) выводят значение своих аргументов в виде последовательности символов в соответствии с форматами, передаваемыми аргументом функции в виде строки. printf() выводит символы в stdout , fprintf() — в указанный FILE * , а sprintf() — в строку (массив char ) в вашей программе.

Текст строки форматов можно разделить на собственно форматы, «управляющие» (Control) и просто символы.

Просто символы копируются на выход «как есть».

Control символы управляют выводом текста на терминал (NewLine, Tab и пр.), их записывают в форматах, начиная символом «бэкслеш» («»). Например:
— Newline, — табуляция, g — bell (терминал пищит). Также (это по правилам записи строковых констант в С) надо писать " для вывода кавычки. Если надо вывести сам символ «», то его надо удвоить: \ .

Символ «%» в строке форматов имеет особое значение. Он начинает очередной формат, который говорит, в каком виде должен быть выведен следующий аргумент и какого он типа. Например:

  • %d — вывести аргумент типа int в виде десятичного числа,
  • %c — вывести аргумент типа char (или младший байт int ) как символ (то есть без преобразований),
Читайте также  Приставки милли микро кило мега гекто

%x — вывести аргумент типа int в виде шестнадцатеричного числа

и так далее. Форматов много, они удобны. Прочтите man и пользуйтесь.

Возвращаясь к указанным Вами непонятным местам в программе:

sprintf(digs, "%d", num); сформирует в массиве digs последовательность цифр числа и переменной num в соответствии с форматом %d (то есть выводит в строку число в десятичном виде);

if (strlen(digs) > idig) проверяет, есть ли вообще цифра номер idig . Например Вы хотите вывести шестую цифру числа, а в числе (например 3) цифра всего одна.

printf ("%d-th digit in %d is ‘%c’
", idig, num, digs[idig — 1]); вывести в stdout:

  • первый %d — переменную idig (номер цифры в числе) как десятичное число,
  • второй %d — переменную num как десятичное число,
  • %c — символ из массива digs (искомую цифру) «как есть».

Надеюсь, теперь стало понятнее. А вообще, читайте, читайте и еще раз читайте документацию.

Сообщество, где люди делятся уникальным опытом

Вопросы и ответы по любой теме от IT сообщества

Помогаем строить карьеру в IT-индустрии

Биржа удаленной работы для IT-специалистов

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

От пользователя, с помощью функции input , я получаю шестизначное число.

После этого нужно разбить его на 6 самостоятельных чисел, например, в список.

Как этого можно добиться?

Например, число 123456 , надо разбить на 1, 2, 3, 4, 5, 6

Ссылка на основную публикацию
Adblock
detector