Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 30
1

Преобразовать int в строку chat

12.12.2020, 00:01. Просмотров 1660. Ответов 3
Метки нет (Все метки)

Всем привет!
У меня есть функция, которая возвращает u_int32 (например 1765738 в десятичной системе)
Код
esp_get_free_heap_size()
Я хочу это значение представить как массив символов "1765738"

Преобразование реализовано сейчас так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
char * int2char(int n) {
  char * c;
  c = (char *)malloc(10 * sizeof(char)); 
  int v = 0; //количество цифр в числе n
  // разбиваем на отдельные символы число n
  while (n > 9) {
      c[v++] = (n % 10) + '0';
      n = n / 10;
  }
  c[v++] = n + '0';
  c[v] = '\0';
  char t;
  // инвертируем массив символов
  for (int i = 0; i < v / 2; i++) {
      t = c[i];
      c[i] = c[v - 1 - i];
      c[v - 1 - i] = t;
  }
  return c;
}
 
printf( "Число: %s", int2char(esp_get_free_heap_size()) )
Возможно ли как то проще это сделать на Си?

Добавлено через 1 час 14 минут
И еще есть проблема, как освободить память от malloc...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2020, 00:01
Ответы с готовыми решениями:

Преобразовать строку цифр в число типа int
Здравствуйте! Помогите поправить код функции, не работает при работе с ведущим знаком '-'....

Преобразовать строку в int
Есть файл: 13 23 41 12 32 0 2 4

Преобразовать строку в int
как из string преобразовать в int form2-&gt;label4-&gt;Text = s;

Как преобразовать строку string в int?
имеется строка string которая содержит такие наборы символов - &quot;0,0,0,3,32,253,0,0,43&quot; необходимо...

3
Эксперт C
25203 / 15683 / 3349
Регистрация: 24.12.2010
Сообщений: 34,162
12.12.2020, 11:48 2
Цитата Сообщение от mcmega Посмотреть сообщение
как то проще
C
1
sprintf(c, "%d", n);
Цитата Сообщение от mcmega Посмотреть сообщение
как освободить память от malloc...
В данном случае только в вызывающей функции. После использования результата.
0
из племени тумба-юбма
1713 / 1245 / 243
Регистрация: 29.11.2015
Сообщений: 6,004
Записей в блоге: 12
13.12.2020, 05:22 3
Увидел новую штуку - функция со звездочкой.
Если убрать звездочку, то компилируется не верно. Что это такое, объясните пожалуйста?

Добавлено через 42 секунды
И как оно работает?
0
442 / 224 / 47
Регистрация: 21.09.2008
Сообщений: 776
13.12.2020, 13:13 4
mcmega, у Вас тип аргумента функции указан как int, что подразумевает возможность выдачи отрицательного результата, но функция это не учитывает. Тогда лучше добавить в определение unsigned. Я пользуюсь такой функцией:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
char* intToStr(uint32_t Number) {
  static char txtBuf[BUFSIZE];
  char* Buf = txtBuf;
  uint8_t IntLen = 1;
  uint32_t Power = 1;
 
  memset(txtBuf, 0, BUFSIZE);
  if (0 == Number) {
    *Buf = '0';
    return txtBuf;
  }
  do {
    Power = Power * 10;
    if (Number >= Power)
      IntLen++;
  } while (Power < Number);
  Buf += IntLen - 1;
  do {
    *Buf = (char)(Number % 10 + '0');
    Number = Number / 10;
    Buf--;
  } while (0 != Number);
  return txtBuf;
}
Макрос BUFSIZE задаётся при компиляции. Используется стандартный заголовочный файл stdint.h. Буфер статический, т.е. сохраняется после выхода из функции.

Добавлено через 15 минут
Функция memset из string.h.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2020, 13:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как преобразовать строку из TextBox в int ?
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //Считываем...

Как преобразовать некорректную строку в int?
У меня есть некорректная строка, как её преобразовать в int?

Прочитать строку из буфера и преобразовать в int
Добрый день уважаемые профессионалы! Есть буфер. Получены данные из ком порта. в формате: 32 43...

Как преобразовать long int в строку
Подскажите пожалуйста функцию преобразования long int в строку

Как преобразовать массив int в строку string?
Как преобразовать массив int в строку типа string?

Преобразовать строку - данные из файла, в List<int>
Здравствуйте, есть ли способ преобразовать строку (string lines) - данные из файла, в List&lt;int&gt; в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.