Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C] Ancora sui puntatori - stampa stringhe

    Ciao ragazzi. Vorrei capire una cosa in questo esercizio che ho provato a fare.
    Volendo stampare tutte le stringhe presente in conjunction, potrei fare così
    codice:
    [...]
    static char *conjunction[] =
    {
    	"il", "lo", "la", "i", "gli", "le", "e", "ed", "o", "ma", "nè"
    };
    
    [...]
    int main()
    {
    	int n = (int) (sizeof (conjunction) / sizeof(conjunction[0]));
    	int i;
    	for (i = 0; i < n; i++)
    			printf("%s\n", conjunction[i]);
    }
    E fino a qui ci sono. Perchè invece se faccio qualcosa del genere il programma non mi stampa correttamente tutte le stringhe? Eppure il principio di funzionamento dovrebbe essere lo stesso, no?

    codice:
    {
    	char *pc = conjunction[0];
    	int n = (int) (sizeof (conjunction) / sizeof(conjunction[0]));
    	while (--n >= 0)
    			printf("%s\n", pc++);
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    No ... semmai

    codice:
    	char **pc = &conjunction[0];
    	int n = (int) (sizeof (conjunction) / sizeof(conjunction[0]));
    	while (--n >= 0)
    		printf("%s\n", *pc++);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    sempre più spiazzato. Grazie mille per la pronta risposta innanzitutto.
    Cosa c'è di diverso con questo che mi hai scritto l'altro giorno?
    Perdonami per la marea di domande, ma se una cosa non la capisco fino in fondo non sono contento

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Scusa ... a quale frase o parte del discorso dell'altro thread ti riferisci?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Originariamente inviato da oregon
    Scusa ... a quale frase o parte del discorso dell'altro thread ti riferisci?
    Li se ricordi avevo qualcosa del genere
    codice:
    char *word[MAX_WORD]
    Per incrementare e passare alla riga successiva, mi hai suggerito di fare così
    codice:
    char *pw = word[0];
    while (...)
          pw++;
    Ora i due esempi non dovrebbero essere identici?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Sì ... un errore dovuto alla fretta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Originariamente inviato da oregon
    Sì ... un errore dovuto alla fretta ...
    Quindi la versione giusta è questa? Sembrava funzionare l'altro programma, ora resto spiazzato di nuovo :S

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da tigerjack89
    Sembrava funzionare l'altro programma, ora resto spiazzato di nuovo :S
    Ma dove l'hai usato nell'altro programma e funzionava? Non penso tu l'abbia usato più perché il codice è cambiato mille volte e non so più quale hai usato.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Originariamente inviato da oregon
    Ma dove l'hai usato nell'altro programma e funzionava? Non penso tu l'abbia usato più perché il codice è cambiato mille volte e non so più quale hai usato.
    Ora non so darti una conferma sicura al 100% perchè sto avendo problemi con l'hard disk e parecchi file e programmi si stanno cancellando :S Però sono sicuro che ieri il programma funzionava.

    Comunque, qualche domanda (ancora ):
    1. In char *pc = conjunction[0] pc è un puntatore a carattere. A quello che ho capito dagli ultimi esempi, dovrebbe contenere l'indirizzo di conjunction[0][0]; incrementandolo, punta di volta in volta a conjunction [0][1],[0][2], ecc. Giusto? Sarebbe la stessa cosa quindi scrivere char *pc = &conjunction[0][0] ?
    2. In char **pc = &conjunction[0], invece, pc è un puntatore di puntatori a carattere, che punta al primo puntatore di conjunction. In pratica, pc punta alla stringa puntata in conjunction[0] e il suo incremento punta alla stringa successiva. Sarebbe, in questo caso, come scrivere char **pc = conjunction, vero?

    Grazie per tutte le delucidazioni

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Sì ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.