Breite des CMD-Fensters ermittlen



  • hi,

    gibt es eine einfache möglichkeit die breite des aktuellen cmd-fensters
    zu ermittlen?

    ich brauche die breite fuer die korrekte ausgabe von großen wertetabellen..



  • Folgendes sollte auf den meisten Systemen funktionieren:

    #ifdef _WIN32
    #  define NOMINMAX
    #  include <windows.h>
    #else
    #  include <fcntl.h>
    #  include <sys/ioctl.h>
    #  include <unistd.h>
    #endif
    
    size_t get_term_columns(void) {
      size_t cols = 80;
    
    #ifdef _WIN32
      HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
      CONSOLE_SCREEN_BUFFER_INFO info;
    
      if(GetConsoleScreenBufferInfo(h, &info)) {
        cols = info.dwSize.X;
      }
    #else
      char const *col_env = getenv("COLUMNS");
    
      if(!col_env || sscanf(col_env, "%lu", &cols) != 1) {
        struct winsize wsz;
        if(!ioctl(STDOUT_FILENO, TIOCGWINSZ, &wsz)) {
          cols = wsz.ws_col;
        }
      }
    #endif
    
      return cols;
    }
    


  • ok, danke

    hab noch ein problem:

    foo(double (*func)(double), string func_name, long double anfangswert, long double endwert, streamsize praezision);
    

    die werte brauch ich aus:

    int main(int argc, char* argv[])
    

    wie kann man das am besten bewerkstelligen? ich komm nicht drauf



  • Du solltest die Aufgaben von Herr Brandenburg eher Lösen als am Tag davor 😉


Anmelden zum Antworten