Ok so I was just wondering how console applications like top(1) for linux overwrite multiple lines. I want to know how to do it for C++ or C. I know how to overwrite 1 line by just putting a \r but I wanted to know how to do so for multiple lines, again like in top or if its even possible.
            Asked
            
        
        
            Active
            
        
            Viewed 509 times
        
    5
            
            
        
        Jeegar Patel
        
- 26,264
 - 51
 - 149
 - 222
 
        csteifel
        
- 2,854
 - 6
 - 35
 - 61
 
- 
                    2It's platform-dependent. Which platform are you on? – Jon Jan 18 '12 at 02:53
 - 
                    Linux is probably where I'm goign to want to be doing this – csteifel Jan 18 '12 at 02:57
 
2 Answers
3
            They use terminal escape sequences to move the cursor around the screen. A few even use direct framebuffer access, to treat the screen as an array of characters which can be directly indexed.
The curses (or ncurses) library is a good abstraction layer.
        Ben Voigt
        
- 277,958
 - 43
 - 419
 - 720
 
- 
                    Just a note, but curses doesn't really exist on Windows: [Is ncurses available for Windows](http://stackoverflow.com/q/138153/16487) – C. Ross Jan 18 '12 at 02:57
 - 
                    @C.Ross: That question asks about replacement terminal emulators that support the curses API. `curses` is certainly available for console mode applications. – Ben Voigt Jan 18 '12 at 03:00
 - 
                    pdcurses actually is very usable, I haven't had any problems with porting my ncurses applications using basic ASCII characters to pdcurses on Windows. if you're using ncursesw, the UTF-8 compatible incarnation of ncurses, you'll probably run into a lot more trouble. – Daniel Kamil Kozar Jan 18 '12 at 03:28
 - 
                    @Daniel: cygwin-installed ncurses apps such as vim work just fine, I don't see why a self-developed app should have any more problems. – Ben Voigt Jan 18 '12 at 04:01