Страница руководства sprintf()
говорит
int sprintf(char *str, const char *format, ...);
sprintf()
, запись в строку символов str
.
Здесь
int value = sprintf(array, "%d", input);
sprintf()
преобразует вход int
в char array
.
Например, если пользователь ввел input
как целое число 123
, он преобразует это в массив символов 123
. Теперь это выглядит как
-------------------------
| 1 | 2 | 3 | \0 |
-------------------------
array
и sprintf()
возвращает возвращает количество напечатанных символов (исключая
нулевой байт, используемый для завершения вывода в строки). Это означает
int value = sprintf(array, "%d", input); /* if input = 123(integer) */
printf("%s: ,%d: \n", array,value);/* array: 123(string), value: 3 */
Когда я запускаю следующий код с вводом '01', значение имеет значение 1, игнорируя 0.? input
объявляется как целое число, и когда пользователь дает 01
тогда scanf()
рассматривает только 1
как ведущий 0
, игнорируемый и только 1
сохраняется в array
, array
выглядит как
--------------
| 1 | \0 |
--------------
array
Однако, если я ввожу '301' с 0, а не в первой позиции, код работает. Если пользователь ввел 301
, тогда scanf()
сохраняется 301
в input
и sprintf()
преобразует int
в массив символов и сохраняет в array
как 301
как
-------------------------
| 3 | 0 | 1 | \0 |
-------------------------
array