PDA

Visualizza la versione completa : C comparazione puntatore


zacca94
16-06-2017, 16:08
Dove sbaglio?


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;
}

oregon
16-06-2017, 16:11
Dove sbaglio?

Tu devi comparare un carattere, non una stringa.

Quindi

if (*(prova+i) != ',') elem++;

zacca94
16-06-2017, 17:26
non va comunque


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

LeleFT
16-06-2017, 17:50
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. :ciauz:

oregon
16-06-2017, 18:06
non va comunque

Come dice Lele ... copia quello che ti ho scritto ... leggilo bene ... e fra l'altro non ho scritto == ma !=

zacca94
18-06-2017, 16:51
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. :ciauz:

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


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


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"

oregon
18-06-2017, 19:05
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'.

Loading