¿Cómo pasar un valor "int" a cualquier bit de una matriz "char"? [cerrado]

int x = 10;
char denemem[13]="|          |";

¿Cómo puedo obtener el resultado que se muestra a continuación escribiendo un código en el lenguaje de programación C? o, más precisamente, ¿cómo puedo pasar int a cualquier lugar (cualquier bit) de una matriz de caracteres que desee?

|    10    |

¡Gracias por toda su ayuda y esfuerzos de antemano!

Answer

Suponiendo que desea un ancho fijo, printf puede hacerlo directamente, siempre que desee una justificación a la izquierda o a la derecha:

printf("|%10d|", x);    // right justified
printf("|%-10d|", x);   // left justified

Desafortunadamente, si desea que el número esté centrado en un campo, es mucho más difícil hacerlo. Debe averiguar qué tan ancho es el número y luego rellenar:

int width = snprintf(0, 0, "%d", x);
if (width <= 10) {
    width += (10-width)/2;
    printf("|%*d%*s|", width, x, 10-width, "");
} else {
    // number is too wide for the field -- do something else

Verifique el código a continuación, espero que entienda por mis comentarios que hay una manera fácil de pasar una cadena o un número entero a cualquier parte de su matriz que desee.

#include <stdio.h>

int main()
{
    
    int x = 10; 
    // this is our integer value and we want to pass it to denemem[13]
    
    char denemem[13]="|          |";   
    // denemem[13] I make 13 instead of 12 on purpose, 
    // because we want to print the number right in the center 
    // and at the end of every string in C language there is 1 character "\0", namely, "terminating character"
    // So, we have got 14 characters now
    
    //now, we need to convert the integer value in "x" to string first to pass it to our own string later on
    char mystr[50];
    sprintf(mystr, "%d", x);
    // get the value in "x" in decimal and then save it in "mystr"
    // by doing this, we converted the integer value in "x" to string in "mystr"
    // and now, we can pass it to any bits of our "denemem" array we want
    
    denemem[5] = mystr[0];             
    // writing the first bit (bit 0) of mystr into the fifth bit (bit 5) of denemem
    
    denemem[6] = mystr[1];            
    // writing the second bit (bit 1) of mystr into the sixth bit (bit 6) of denemem
    
    printf("%s", denemem);           
    // print what's in denemem

    return 0;
}