View Full Version : [c++] array e sequenze di escape
Ho bisogno di 2 informazioni:
---come faccio a passare gli array alle funzioni?
---esiste una sequenza di escape che faccia il contrario di "\n"?
o comunque esiste un modo per fare l'opposto di "n"?
---come faccio a passare gli array alle funzioni?
Ciao, gli array, in c/c++, non vengono mai passati per valore alle funzioni. Quello che viene passato è il puntatore al primo elemento dell'array. Il nome dell'array, da solo, è il puntatore al primo elemento. Ci sono poi 3 modi per dichiarare il parametro di una funzione che riceve un array:
int arr[10]; /* Array */
pippo (arr); /* Chiamata a pippo */
Funzioni che ricevono un array:
void pippo (int arr[10]) /* Modo 1*/
void pippo (int arr[]) /* Modo 2 */
void pippo (int *arr) /* Modo 3 */
---esiste una sequenza di escape che faccia il contrario di "\n"?
o comunque esiste un modo per fare l'opposto di "n"?
:eh: Cosa intendi per opposto???? '\n' è l'escape per il newline. Cosa intendi per opposto di newline??? Spiegati ...
Grazie per la prima spiegazione
:eh: Cosa intendi per opposto???? '\n' è l'escape per il newline. Cosa intendi per opposto di newline??? Spiegati ...
Intendo,se posso far stampare al programma (a video) una stringa di caratteri nella righa precedente rispetto dove era arrivato a stampare.
Fenomeno85
11-12-2005, 12:32
si è \r
~§~ Sempre E Solo Lei ~§~
si è \r
No :nono: , l'escape '\r' è il "carriage return", che porta il cursore all'inizio della riga in cui si trova e basta.
Se ho ben capito, Arthax vuole un qualcosa per portare il cursore sulle righe precedenti, sopra a quella corrente in pratica.
A livello di codice ASCII puro non esiste niente del genere (quindi nulla di standard e portabile), però però ..... mi è appena venuto in mente che ci sono le sequenze di escape: <ECMA-48 CSI sequences> (http://linux.about.com/library/cmd/blcmdl4_console_codes.htm#lbAG).
So che sono supportate dalla console di linux ma per il resto delle piattaforme ... non saprei dire.
Una tipica sequenza ECMA-48 CSI (dal prompt della console di linux):
echo -e "\033[6A;"
porta il cursore 6 righe sopra.
mi sa che in maniera standard non è possibile fare quello che chiedi perché stdout è visto come uno "stream", come un file insomma: si va solo in avanti. la console è solamente un log, e le linee che vanno sopra il limite superiore vengono addirittura perse (o almeno era così fino a qualche anno fa :p).
se proprio hai la necessità di cambiare una cosa che hai scritto più in alto allora penso che non devi usare una console, bensì un qualche tipo di text box in una interfaccia grafica; altrimenti devi cambiare l'output del tuo programma e riscrivere alla linea successiva un messaggio che indichi il cambiamento.
Fenomeno85
11-12-2005, 15:40
No :nono: , l'escape '\r' è il "carriage return", che porta il cursore all'inizio della riga in cui si trova e basta.
Bho io avevo inteso in quel modo :D
~§~ Sempre E Solo Lei ~§~
Quindi come posso superare il mio problema,vi spiego:
Oviamente sono alle prime armi con la programmazione,volevo realizare una semplice sloot machine testuale con 3 numeri. Es. 5 5 5
Quando viene premuto un tasto,prima che escano i tre numeri vincenti, volevo che scorressero tutti i numeri almeno un paio di volte come in una sloot vera.
Come potrei fare?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.