[2021] ¿Cómo se convierte un int en una cadena en C? {DH}

Para convertir algo en una cadena, debe 1) asignar la cadena resultante, o 2) en un. a entregar char * Objetivo y tamaño. Código de muestra a continuación:

Ambos funcionan para todos int incluso INT_MIN. Ofrecen un rendimiento constante en lugar de snprintf() que depende de la ubicación actual.

Método 1: regreso NULL si no hay suficiente memoria.

#define INT_DECIMAL_STRING_SIZE(int_type) ((CHAR_BIT*sizeof(int_type)-1)*10/33+3)

char *int_to_string_alloc(int x) {
  int i = x;
  char buf[INT_DECIMAL_STRING_SIZE(int)];
  char *p = &buf[sizeof buf - 1];
  *p = ' ';
  if (i >= 0) {
    i = -i;
  }
  do {
    p--;
    *p = (char) ('0' - i % 10);
    i /= 10;
  } while (i);
  if (x < 0) {
    p--;
    *p = '-';
  }
  size_t len = (size_t) (&buf[sizeof buf] - p);
  char *s = malloc(len);
  if (s) {
    memcpy(s, p, len);
  }
  return s;
}

Método 2: espalda NULL si el búfer era demasiado pequeño.

static char *int_to_string_helper(char *dest, size_t n, int x) {
  if (n == 0) {
    return NULL;
  }
  if (x <= -10) {
    dest = int_to_string_helper(dest, n - 1, x / 10);
    if (dest ==...

Leer mas:
[2021] ¿Cómo se convierte un int en una cadena en C? {DH}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *