Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    stringhe e puntatori

    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ì:
    codice:
    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
    codice:
        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()

    codice:
      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.

    codice:
    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non funziona ... in che senso?

  3. #3
    ...nel main la uso così:

    codice:
    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

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    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 ?

  5. #5
    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

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Moderazione

    Il linguaggio va sempre indicato nel titolo, come da Regolamento.

    Questa discussione l'ho corretta io.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    ...ho risolto...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.