@TONoRNaE

С: Почему выводит не то? Где ошибка?

Задание: дано натуральное число N. Сформировать массив, элементами которого есть цифры числа N.
Я на выводе получаю такое: number= 532
5 ╠ ╠

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

char* CreateArrByNumber(int number, int* len)
{
    *len = (int)log10((double)number) + 1;
    int mas[10];
    int* arr = mas;
    int i;
    for (i = *len - 1; i >= 0; --i)
    {
        *(arr + i) = '0' + (number % 10);
        number /= 10;
    }

    return arr;
}

int main()
{
    int i;
    int len;
    int number;
    printf("number= ");
    scanf_s("%i", &number);
    if (number == 0)
    {
        printf("Input 0, error!");
    }
    else {
        char* arr = CreateArrByNumber(number, &len);

        for (i = 0; i < len; ++i)
            printf("    %c", arr[i]);

        return 0;
    }
}
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
int CreateArrByNumber(int number, char *arr) {
  int len;
  if (number == 0) {
    arr[0] = '0';
    arr[1] = 0;
    return 1;
  }
  len = 0;
  while (number > 0 && len < 9) {
    arr[len++] = '0' + (number % 10);
    number /= 10;
  }
  arr[len] = 0;
  return len;
}

int main(void) {
  char arr[10];
  int len, number;
  // Здесь ввод
  len = CreateArrByNumber(number, arr);
  // Здесь вывод в обратном порядке
  return 0;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы