Cómo agregar ceros iniciales a una variable definida por el usuario en C utilizando sprintf?
Estoy trabajando en un programa en el que necesito agregar ceros iniciales a 3 números.
Entonces el código se ve así:
#include <iostream>
using namespace std;
// Check Examples
// Versión del compilador g++ 6.3.0
int main()
{
long int num = 5;
char CNum[10];
sprintf(CNum, "%03ld", num);
std::cout << CNum;
return 0;
}
// Outputs 005
Ahora definamos el número de ceros iniciales en una variable entera llamada blank
:
#include <iostream>
using namespace std;
// Check Examples
// Versión del compilador g++ 6.3.0
int main()
{
int blank = 3;
long int num = 5;
char CNum[10];
sprintf(CNum, "%0%dd", blank, num);
std::cout << CNum;
return 0;
}
Después de eso, el código debería verse así:
#include <iostream>
using namespace std;
// Check Examples
// Versión del compilador g++ 6.3.0
int main()
{
int blank = 3;
long int num = 5;
char CNum[10];
sprintf(CNum, "%03ld", num);
std::cout << CNum;
return 0;
}
Luego, edité los argumentos de sprintf de esta manera:
sprintf(CNum, "%0%dld", blank, num);
Y esto muestra:
%dld
En lugar de:
005
Ahora, mis preguntas principales son:
- ¿Puedo agregar ceros iniciales definidos por el usuario de esta manera en sprintf?
- Si sí, ¿cómo puedo hacer que mi código haga esto?
- Si no, ¿hay alguna otra forma de realizar la misma acción para obtener la salida deseada?
Gracias, espero sus amables respuestas…
davy.ai
Respuesta:
Para hacer que el código funcione con ceros iniciales definidos por una variable de usuario, puedes modificar los argumentos de sprintf de la siguiente manera:
sprintf(CNum, "%0*d", espacio en blanco, num);
Esto rellenará la variable entera num con la cantidad de ceros iniciales especificada por la variable espacio en blanco.
Este código convierte la variable entera en una cadena, calcula la cantidad de ceros iniciales necesarios y luego los agrega al principio de la cadena usando un bucle. Finalmente, muestra la cadena rellenada.