Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - sovrascrivere l'output della console
Forum - C/C++ - sovrascrivere l'output della console

Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Segnala al moderatore
Postato alle 13:49
Sabato, 09/10/2010
ciao a tutti, il titolo dice tutto, qualcuno sa darmi qualche informazione?

io conosco questo:
Codice sorgente - presumibilmente Plain Text

  1. cout<<"ciao come va?";
  2. cout<<"\rhello world!";


però dal momento che vado a capo con \n o endl , \r giustamente non va più bene.
mi interesserebbe sovrascrivere delle righe a mio piacimento,è possibile?
grazie in anticipo


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
PM
Avatar
giuseppe93 (Ex-Member)
Pro


Messaggi: 166
Iscritto: 02/08/2009

Up
2
Down
V
Segnala al moderatore
Postato alle 15:01
Sabato, 09/10/2010
Ciao! Puoi usare la funzione SetConsoleCursorPosition(HANDLE h,COORD c)
dove h è l'handle della console che ottieni facendo:
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
e c è una struttura che contiene le coordinate del cursore
COORD c={0,0};
per sovvrascrivere una riga o solo una parola puoi fare questo giochetto spostanso il cursore sulla riga e colonna che vuoi e il poi scriverci il testo che sostituirà il vecchio


:)
PM
Avatar
Bonny (Member)
Expert


Messaggi: 435
Iscritto: 24/04/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 13:57
Sabato, 09/10/2010
prova cosi:

Codice sorgente - presumibilmente Plain Text

  1. cout<<"ciao come va?";
  2.       system("cls");
  3.       cout<<"\rhello world!";



system("cls") pulisce la schermata.


Bonny
PM
Avatar
Bonny (Member)
Expert


Messaggi: 435
Iscritto: 24/04/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 13:57
Sabato, 09/10/2010
prova cosi:

Codice sorgente - presumibilmente Plain Text

  1. cout<<"ciao come va?";
  2.       system("cls");
  3.       cout<<"\rhello world!";



system("cls") pulisce la schermata.


Bonny
PM
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 13:58
Sabato, 09/10/2010
Testo quotato

Postato originariamente da Bonny:

prova cosi:

Codice sorgente - presumibilmente Plain Text

  1. cout<<"ciao come va?";
  2.       system("cls");
  3.       cout<<"\rhello world!";



system("cls") pulisce la schermata.



conosco gia cls però cosi facendo devo rifare tutti gli output che mi servono.. a me non serve cancellare la schermata, mi serve solo sovrascrivere delle righe a mio piacimento piuttosto che poter sovrascrivere solo l'ultima ( come nel caso di \r )


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
PM
Avatar
GuglielmoS (Ex-Member)
Pro


Messaggi: 114
Iscritto: 27/11/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 14:15
Sabato, 09/10/2010
Prova a dare uno sguardo alle librerie ncurses.
Ciao GuglielmoS.


La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
--Isaac Asimov
PM
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 15:00
Sabato, 09/10/2010
ragazzi grazie delle risposte , comunque ho trovato la soluzione :)

Codice sorgente - presumibilmente Plain Text

  1. cout<<"ciao come va?\n";
  2. cout<<"hello world!";
  3.  
  4. HANDLE handle = GetStdHandle ( STD_OUTPUT_HANDLE );
  5. COORD coordinate = {3,0};
  6. FillConsoleOutputCharacter ( handle,'c',1, coordinate, 0 );



ottenendo in output
Codice sorgente - presumibilmente Plain Text

  1. ciac come va?
  2. hello world



che era esattamente l'effetto da me desiderato :)
grazie comunque, alla prossima!


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
PM
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 15:10
Sabato, 09/10/2010
Testo quotato

Postato originariamente da giuseppe93:

Ciao! Puoi usare la funzione SetConsoleCursorPosition(HANDLE h,COORD c)
dove h è l'handle della console che ottieni facendo:
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
e c è una struttura che contiene le coordinate del cursore
COORD c={0,0};
per sovvrascrivere una riga o solo una parola puoi fare questo giochetto spostanso il cursore sulla riga e colonna che vuoi e il poi scriverci il testo che sostituirà il vecchio



bel metodo anche questo, forse anche meglio di quello che ho appena postato, grazie tante :)


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
PM