¿Es posible imprimir (a stdout
, o un archivo) un número (int
, float
, double
, long
, etc.) sin tener que utilizar ninguna de las funciones (*printf
printf
, fprintf
, sprintf
, snprintf
, vsprintf
, ...)?impresión de un número sin usar * printf
Respuesta
Si su libc contiene una función itoa()
, puede usarla para convertir un entero en una cadena.
De lo contrario, tendrá que escribir el código para convertir un número en una cadena usted mismo.
itoa()
aplicación de C Programming Language, 2nd Edition - Kernighan and Ritchie página 64:
/* itoa: convert n to characters in s */
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0) /* record sign */
n = -n; /* make n positive */
i = 0;
do { /* generate digits in reverse order */
s[i++] = n % 10 + '0'; /* get next digit */
} while ((n /= 10) > 0); /* delete it */
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
Basta con utilizar la función de escritura() y formatear la salida de uno mismo.
Bueno, no es difícil de hacer para enteros, pero el trabajo es un poco más complicado para números flotantes, y alguien ya ha publicado un puntero a una explicación para eso. Para enteros, se puede hacer algo como esto:
void iprint(int n)
{
if(n > 9)
{ int a = n/10;
n -= 10 * a;
iprint(a);
}
putchar('0'+n);
}
Asumo la mayoría de las personas que vienen a través de esta pregunta, ya que han escrito sus propias funciones tx serie y necesitan imprimir algunos números. Deberá modificar la llamada de putc para que se ajuste a su configuración.
void print_int(int num)
{
if (num < 0)
{
putc('-');
num = -num;
}
else if (num == 0)
{
putc('0');
return;
}
while (num != 0)
{
putc ('0'+ (num%10));
num /= 10;
}
}
Esto imprimirá un número en orden inverso.
La pregunta no era cómo imprimir un número en reversa. Fue como imprimir un número. –
esto resultaría orden correcto:
void print_int(int num){
int a = num;
if (num < 0)
{
putc('-');
num = -num;
}
if (num > 9) print_int(num/10);
putc('0'+ (a%10));
}
- 1. Impresión de un char con printf
- 2. impresión manual de un número entero de 0 bytes
- 3. C número complejo e printf
- 4. arm-none-eabi-gcc: Impresión del número de flotación usando printf
- 5. impresión valores cortos sin signo
- 6. Impresión doble sin perder precisión
- 7. impresión anidada JSON sin usar nombres de variables
- 8. Cómo usar printf con NSString
- 9. Número de impresión en formato de ingeniería
- 10. WPF: Impresión de FlowDocument sin diálogo de impresión
- 11. Impresión de flotantes con un número específico de ceros
- 12. Javascript impresión sin cuadro de diálogo de impresión
- 13. Cuándo usar printf/scanf vs cout/cin?
- 14. C: Impresión de grandes números de
- 15. Establecer el número predeterminado de lugares decimales para la impresión
- 16. printf especifica cadena de formato de número entero de flotación
- 17. Agregar cero a la cadena, sin printf
- 18. cadena de impresión sin personajes escapan
- 19. Cómo imprimir número binario a través de printf
- 20. Printf sin salto de línea en el montaje
- 21. ¿tipo de bit de impresión como número entero? ¿Cómo es la conversión?
- 22. Registrar un mensaje con un número variable de argumentos de estilo printf
- 23. Agregar dos números sin usar operadores
- 24. WinRT Metro App Impresión directa (sin cuadro de diálogo de impresión)
- 25. Imprime un '+' inicial para números positivos en printf
- 26. Cómo imprimir un int largo sin signo con printf en C?
- 27. ¿Puede Python generar un número aleatorio que excluya un conjunto de números, sin usar la recursión?
- 28. número de impresión de los fallos de JUnit en Ant
- 29. ¿Qué debo usar en lugar de printf en Perl?
- 30. Usar Javascript para cambiar los estilos de visualización (CSS) sin afectar a los estilos de impresión
'' float' y double' no son números enteros. – dreamlax
¿Por qué lo necesitarías? – gnud
posible duplicado de [¿Cómo se imprime un número IEEE754 (sin printf)?] (Http://stackoverflow.com/questions/4274926/how-do-you-print-out-an-ieee754-number-without- printf) –