Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: v4char en Noviembre 09, 2015, 01:20:27 pm

Título: Ancho y alto en terminal en C
Publicado por: v4char en Noviembre 09, 2015, 01:20:27 pm
He hecho este sencillismo programa para la gente que necesite escribir en terminal y quiera centrar el texto o ponerlo en una posicion concreta o que el stdin este en la parte inferior

Código: C++
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #ifdef _WIN32
  5.    #include <windows.h>
  6. #else
  7.    #include <sys/ioctl.h>
  8. #endif
  9.  
  10. void dibujar(int filas,int columnas,char *texto,int pos_x,int pos_y)
  11. {
  12.    int i,j;
  13.    for(i = 0;i < filas-1;i++)
  14.    {
  15.       for (j = 0;j < columnas;j++)
  16.       {
  17.          if(j == 0 || j == columnas-1)
  18.          {
  19.             printf("|");
  20.          }
  21.          else if(i == 0 || i == filas-2)
  22.          {
  23.             printf("=");
  24.          }
  25.          else if(i==pos_x && j==pos_y)
  26.          {
  27.             printf("%s",texto);
  28.             j = j-1 + strlen(texto);
  29.          }
  30.          else
  31.          {
  32.             printf(" ");
  33.          }
  34.       }
  35.    }  
  36. }
  37.  
  38.  
  39. int main ()
  40. {
  41.    int columnas,filas;
  42.        
  43.    #ifdef _WIN32
  44.       CONSOLE_SCREEN_BUFFER_INFO csbi;
  45.       GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
  46.       columnas = csbi.srWindow.Right - csbi.srWindow.Left + 1;
  47.       filas = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
  48.    #else
  49.       struct winsize w;
  50.       ioctl(0, TIOCGWINSZ, &w);
  51.       filas=w.ws_row;
  52.                 columnas=w.ws_col;
  53.    #endif  
  54.  
  55.    dibujar(filas,columnas,"Hola mundo" ,20,15);
  56.    printf("#(Pulsa Intro para continuar)");
  57.    getchar();
  58.  
  59.    return 0;
  60. }

Si utilizas un poco la imaginacion podras centrar el texto a lo ancho y a lo largo, esto es solo un pequeño y sencillo programa en un futuro tengo pensado poner que escriba varios texto almacenados en un array[][]