Можно ли преобразовать int в строку в C без sprintf? - PullRequest
0 голосов
/ 06 января 2019

Мне нужно сделать код, который делает массив из char из int следующим образом:

int a = 312419;
string = ['+','3','1','2','4','1','9']

Другой пример:

int a = -20;
string = ['-', '2', '0']

Мне разрешено использовать только:

  • <stdio.h> (но не семейство функций *printf())
  • <stdlib.h>
  • <string.h>
  • и for петли

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Ответ "да, это возможно"

Однако я не буду делать всю вашу домашнюю работу за вас, поэтому вот код, который не решает всей проблемы, но должен дать вам идею для решения проблемы самостоятельно.

  int a = 312419;
  while(a)
  {
    int t = a % 10;
    char c = '0' + t;
    printf("%c\n", c);
    a = a / 10;
  }

Выход:

9
1
4
2
1
3

Обратите внимание, как номер печатается в обратном порядке. Вместо этого ваша задача - сохранить символы в массиве в правильном порядке.

0 голосов
/ 06 января 2019

Вы можете использовать snprintf для этого.

int a = -20;
char string[MAXLEN+1];
snprintf(string, MAXLEN, "%d", a)

Единственное отличие состоит в том, что вы получите значение \0 в конце массива string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...