PDA

Visualizza la versione completa : [C++] Stringhe e puntatori


t1t
20-01-2006, 18:02
ho un programma (una sorta di rudimentale editor di testo) nel quale ho la necessità, in una funzione, di ritornare una stringa.
Ho definito un tipo "Testo" così:

typedef struct {
char *p;
int nr; // numero di colonne
int nc; // numero di righe
int r0; // riga di visualizzazione su video
int c0; // colonna di visualizzazione su video
} Testo;
con le seguenti funzioni


Testo nuovo(int nr, int nc); // costruttore
void distruggi(Testo& t); // distruttore
int nRighe(Testo& t); //ritorna il numero di righe
int nColonne(Testo& t); //ritorna il numero di colonne
void assegna(Testo& t,int i,int j,char ch); //inserisce un carattere nella posizione i,j (si tratta di una sorta di matrice fatta mediante l'uso di una stringa sulla quale calcolo il numero di colonne e righe per effettuare gli inserimeni) es: t.p[9] = 'a'
char carattere(Testo& t, int i, int j); //ritorna un carattere nella posizione i,j es: return t.p[3];
void load(Testo& t, char *nomefile); //carica il testo da un file sulla stringa t.p
void show(Testo& t, int r0, int c0); //visualizza il testo dalla stringa t.p sullo schermo con le funzioni grafiche
void edit(Testo& t); //gestisce l'immisione del testo tramite la grafica
void save(Testo& t, char *nomefile); //salva su file il contenuto di t.p
char* stringaDi(Testo& t); //deve tornarmi tutta la stringa t.p

questa è la funzione stringaDi()


char* stringaDi(Testo& t)
{
return t.p;
}

il problema stà nel richiamarla dal main perchè ho bisogno di metterla in un altra stringa che poi devo comparare.


char* comando=stringaDi(t) //non funziona

scusate se il messaggio è prolisso, ma non sapevo come spiegare il mio problema altrimenti, anche perchè le mie conoscenze sono limitate (questo è un programma che devo fare per scuola!)

grazie a tutti quelli che vorranno darmi una mano

oregon
20-01-2006, 18:36
Non funziona ... in che senso?

t1t
20-01-2006, 18:52
...nel main la uso così:


for (;;)
{
edit(t);
edit(c);
char* comando=stringaDi(c);
if (strcmp(comando,"FINE")==0)
{
distruggi(t);
distruggi(c);
close_term();
break;
}
else if (strcmp(comando,"edit")==0)
{
edit(t);
}
else if (strcmp(comando,"save")==0)
{
save(t,"testo.txt");
}
else if (strcmp(comando,"load")==0)
{
load(t,"testo.txt");
}
break;

}

return;
}
fatto stà che appena esco dal secondo edit (nonostante abbia scritto "save" mi chiude il programma

oregon
20-01-2006, 19:00
Tu dichiari due variabili di tipo Testo, cosi'

Testo t, c;

? E poi cosa fai nella Edit?

Hai provato a fare un po' di debug e fermare l'esecuzione all'interno della seconda Edit ?

t1t
20-01-2006, 19:14
la edit gestisce i caratteri che digito...e me li salva per esempio nella stringa t.p
http://www.t1t.it/editor.zip ...qui ci sono i file .h con la descizione delle funzioni se qualcuno vuole darci un'occhiata

alka
20-01-2006, 21:26
Il linguaggio va sempre indicato nel titolo, come da Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=862017).

Questa discussione l'ho corretta io. :)

Ciao! :ciauz:

t1t
26-01-2006, 15:33
...ho risolto...

Loading