Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15

    [c++] problema stampa valore puntatore

    Ciao a tutti,
    spero che il titolo sia in linea con il problema! Ho una funzione che stampa una lista di contatti:

    codice:
               friend ostream& operator <<(ostream& output,struct contatto& print){
                    output<< print.t<< ": ";
                    output<< print.n; 
                    return output;
                }
    Così funziona, ma non mi piace molto, perchè il risultato è questo:
    1: primonumero
    2: secondonumero

    etc etc

    Adesso, al posto di 1: e 2: vorrei scrivere la tipologia, quindi ho modificato così il programma:
    codice:
                friend ostream& operator <<(ostream& output,struct contatto& print){
                    if(print.t=="1")
                        output<<"valore 1: ";
                    if(print.t=="2")
                        output<<"valore 2: ";
                    if(print.t=="3")
                        output<<"valore 3: ";
    
                    output<< print.n;  //RESTITUISCE BENE IL NUMERO
                    return output;
                }
    io mi aspettavo di vedere:
    valore 1: primonumero
    valore 2: secondonumero

    etc etc

    invece viene fuori:
    primonumero
    secondonumero


    Contatto è dichiarato così:
    codice:
            struct contatto{
                char* t;
                char* n;
                contatto(){
                    t=0;
                    n=0;
                }
    Suppongo che il problema è che t, è un puntatore al char, giusto? come posso risolvere il problema?
    Grazie mille.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,348
    Se è un puntatore ad una stringa del C allora devi usare la funzione strcmp( ) per confrontare non ==

    Se è un semplice puntatore ad un char allora usi i singoli apici

    print.t == '1'
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15
    Grazie oregon,
    avevo già provato con gli apici, ma il risultato era lo stesso. Ora provo con la strcmp, prima però me la studio perchè non so come funziona!

    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Se è un puntatore ad una stringa del C allora devi usare la funzione strcmp( ) per confrontare non ==

    Se è un semplice puntatore ad un char allora usi i singoli apici

    print.t == '1'
    ho modificato così:

    codice:
                    char val1;
                    val1='1';
                    char* var1;
                    var1=new char[1];
                    var1=&val1;
                    if(strcmp(print.t,var1))
                        output<<"valore 1: ";
    Così funziona, ma l'ho usato bene, giusto?
    Grazie mille per l'aiuto!

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,348
    No ... un attimo ...

    Intanto non va bene scrivere

    n=0;
    t=0;

    e poi dovresti chiarire ... perché hai utilizzato due puntatori nella struttura?
    Forse volevi solamente usare due semplici char?

    struct contatto{
    char t;
    char n;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15
    Ciao oregon,
    sinceramente era un pezzo di codice che avevo trovato in giro ed era proprio un esempio che faceva al caso mio. Sinceramente non so perchè ha usato i puntatori invece che dei char!
    magari faccio una prova, cambio come hai detto tu i puntatori, ma tutto il codice che ho trovato è basato su quello... però ora provo!! ti faccio sapere! Grazie mille!

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,348
    In realtà non si programma con pezzi di codice copiato senza sapere se si sta facendo bene o no.

    Hai analizzato il problema che ti è stato dato? Cosa dovranno contenere quei campi di quella struttura?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15
    Rieccomi,
    mi sono trovata meglio nell'utilizzare string invece che char. Ed effettivamente il codice risulta più pulito e funziona tutto correttamente.
    Anche quelle if di prima, sono più gestibili con le variabili string.
    Grazie mille ancora.
    Monia

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,348
    Ma non ho ancora capito la necessità derivante dal problema ... devi memorizzare un solo carattere o una stringa?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15
    Io devo realizzare una rubrica telefonica: per ogni persona che aggiungo in rubrica, devo inserire diversi tipi di contatti.
    Quindi ho realizzato la struttura del contatto dove il tipo è un numerico da 1 a 5: ogni numero è una tipologia (cellulare, numero casa, email...). La seconda variabile memorizza il numero.

    Il programma quando inserisce una nuova persona mi chiede se voglio inserire un nuovo contatto e visualizzo le tipologie che voglio inserire. L'utente sceglierà da 1 a 5. Poi il programma chiede il numero. E questo giro è in un loop.
    Una volta terminata questa fase, nella stampa della rubrica volevo far visualizzare i contatti della persona, quindi mettevo:
    nome e cognome
    tipo1: numero1
    tipo2: numero2

    ...
    solamente che come scrivevo nel primo post, veniva fuori:
    1: numero1
    2: numero2
    ...
    ed era poco elegante, per questo volevo creare dei controlli sul tipo con delle if, in modo tale che invece che 1,2,3... veniva fuori "cellulare, casa, email..."

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 © 2021 vBulletin Solutions, Inc. All rights reserved.