Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    91
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Il problema è in questa linea

    char**str="pippo";

    Osservala con attenzione ...
    in parole povere str punta a un puntatore che non esiste in memoria: pare essere questo il problema

  2. #12
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    In realtà è proprio l'uguaglianza che non regge! E' un po' come se tu scrivessi

    codice:
    int numero = "pippo";

    Sono tipi di dato diversi, quindi l'assegnazione non può che portare problemi.


  3. #13
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Quote Originariamente inviata da toni00t Visualizza il messaggio
    in parole povere str punta a un puntatore che non esiste in memoria: pare essere questo il problema
    Se la vuoi mettere così ... ma non mi pare tu abbia capito ancora il problema.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #14
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    91
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Se la vuoi mettere così ... ma non mi pare tu abbia capito ancora il problema.
    ciao il mio ragionamento è errato?
    comunque adesso
    codice:
    char **str="pippo";
    printf("%s" , str);
    funziona

    e anche
    codice:
    char *str="pippo";
    char **str2;
    str2=&str;
    printf("%s",*str2);
    funziona

    quindi in definitiva char **str="pippo" è di per se un puntatore a stringa e non un puntatore a puntatore a stringa,
    giusto?

  5. #15
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ma no ... stai facendo una gran confusione.

    Se scrivi questo

    char **str="pippo";
    printf
    ("%s", str);

    un compilatore degno di questo nome dovrebbe darti un errore, come questo


    Error 1 error C2440: 'initializing' : cannot convert from 'const char [6]' to 'char **'

    o come questo

    cannot convert `const char*' to `char**' in initialization

    perché questa

    char **str="pippo";

    è sbagliata e non può essere compilata.

    In ogni caso, cosa è che stai studiando ? Perché sei bloccato su questa faccenda ?
    Ultima modifica di oregon; 05-05-2014 a 22:38
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #16
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    91
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Ma no ... stai facendo una gran confusione.

    Se scrivi questo

    char **str="pippo";
    printf
    ("%s", str);

    un compilatore degno di questo nome dovrebbe darti un errore, come questo


    Error 1 error C2440: 'initializing' : cannot convert from 'const char [6]' to 'char **'

    o come questo

    cannot convert `const char*' to `char**' in initialization

    perché questa

    char **str="pippo";

    è sbagliata e non può essere compilata.

    In ogni caso, cosa è che stai studiando ? Perché sei bloccato su questa faccenda ?
    ciao stavo usando il gcc ; ho qualche warning , ma compila : usando il printf in questo modo
    codice:
    char **str="pippo";
    printf ("%s" , str);
    mi fa stampare la stringa
    stavo rivedendo un po di puntatori nel C : con la doppia indirezione ogni tanto faccio dei casini
    ps quale compilatore usi tu ?

  7. #17
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ho usato gcc e visual C++ e comunque ho quegli errori. Quali warnings hai esattamente?

    In ogni caso, anche se compila i warnings ti indicano che l'uso che fai di quel doppio puntatore non è corretto.
    Il C ti permette di fare tante cose "fuori" dal normale (bastano un po' di cast) ma non è detto che siano corretti.

    Ti consiglio di rivedere ancora i puntatori (in particolare la doppia indirezione) perché non li hai ancora compresi bene ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #18
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    91
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Ho usato gcc e visual C++ e comunque ho quegli errori. Quali warnings hai esattamente?

    In ogni caso, anche se compila i warnings ti indicano che l'uso che fai di quel doppio puntatore non è corretto.
    Il C ti permette di fare tante cose "fuori" dal normale (bastano un po' di cast) ma non è detto che siano corretti.

    Ti consiglio di rivedere ancora i puntatori (in particolare la doppia indirezione) perché non li hai ancora compresi bene ...

    codice:
    warning format %s expects argument of type 'char *' but argument 2 has type 'char **'..
    printf...

  9. #19
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ecco ... più chiaro di così il compilatore non poteva essere ...

    Dunque non devi assolutamente eseguire il programma prima di avere risolto quel problema.
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.