Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,316

    C comparazione puntatore

    Dove sbaglio?

    codice:
        int elem = 0, i = 0;
        char *prova = "-1,-1,2,3";
        
        for (; i < strlen(prova); i++) {
            printf("%c ", *(prova+i));
            if (strcmp(*(prova+i), ",") != 0) elem += 1; 
        }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da zacca94 Visualizza il messaggio
    Dove sbaglio?
    Tu devi comparare un carattere, non una stringa.

    Quindi

    if (*(prova+i) != ',') elem++;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,316
    non va comunque

    warning: comparison between pointer and integer
    if (*(prova+i) == ",") elem += 1;

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Neanche copiare... oregon ha scritto la virgola tra apici singoli (una costante char), tu l'hai scritta tra virgolette (è una costante stringa, ovvero un puntatore a carattere)... e te l'aveva pure scritto...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da zacca94 Visualizza il messaggio
    non va comunque
    Come dice Lele ... copia quello che ti ho scritto ... leggilo bene ... e fra l'altro non ho scritto == ma !=
    Ultima modifica di oregon; 16-06-2017 a 18:11
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,316
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Neanche copiare... oregon ha scritto la virgola tra apici singoli (una costante char), tu l'hai scritta tra virgolette (è una costante stringa, ovvero un puntatore a carattere)... e te l'aveva pure scritto...


    Ciao.
    Siccome sto studiando da poco C e provengo da linguaggi dove è sempre stato presente il Garbage Collector puoi capire come per me sia abbastanza sconcertante scoprire una differenza fra "," e ','.

    Quindi porta pazienza per favore.

    Quindi:
    "," restituisce l'id

    codice:
    printf("%p", ",");
    
    matias@matias-desktop:~/Desktop$ gcc try.c -o try
    matias@matias-desktop:~/Desktop$ ./try
    0x40075d
    Mi fate un esempio per spiegarmi meglio "," e ','?

    Grazie

    // Edit

    ok dovrei aver capito...

    codice:
    matias@matias-desktop:~/Desktop$ gcc try.c -o try
    matias@matias-desktop:~/Desktop$ ./try
    
    ,
    
    /* try.c */
    
    printf("%c", *(","));
    Edit:

    E per logica: printf("\n%c\n", *(",A" + 1));
    restituisce "A"
    Ultima modifica di zacca94; 18-06-2017 a 17:06

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Pazienza massima con tutti ma bisogna almeno leggere le risposte e chiedersi se qualcosa non va solo perché non si sono seguiti i consigli. Provare esattamente quello che viene proposto abbandonando tutte le conoscenze relative ad altri linguaggi, che possono confondere. E consultare i libri del linguaggio se si hanno dubbi senza andare 'per logica'.
    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.