Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Char vuota ma non vuota
Forum - C/C++ - Char vuota ma non vuota

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 18:10
Martedì, 05/01/2010
Ho un problema:
ho una funzione scritta da me che riceve come input un char che contiene numeri e lettere;
capita che questa char contenga il "00" e se va avanti nel metodo alla fine mi ritorna dei valori sbagliati (ovviamente). Io ho bisogno di capire se in questa char sta scritto "00" e ritornare direttamente 0. Ho già provato confrontando normalemente ma non funziona. mi sapete dire come posso fare?

grazie


Se passi a mac da win non sai cosa ti trovi, ma stai sicuro che non tornerai mai indietro
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:39
Martedì, 05/01/2010
Non è che ci abbia capito molto ma, se intendi testare se il char contiene il valore nul, basta una if con 0

if(ch==0)


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 20:06
Martedì, 05/01/2010
Testo quotato

Postato originariamente da nessuno:

Non è che ci abbia capito molto ma, se intendi testare se il char contiene il valore nul, basta una if con 0

if(ch==0)



esatto

comunque:
Codice sorgente - presumibilmente C/C++

  1. if(ch==00)
  2. {
  3. stringa=0; //Riportiamo il char a 0
  4. }
  5. else
  6. {
  7. //Se il char è diverso da 00 fai altro:....
  8. }


Ultima modifica effettuata da mitor il 05/01/2010 alle 20:11
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 20:08
Martedì, 05/01/2010
come non funziona "normalmente"?

è una stringa e se la confronti con
Codice sorgente - presumibilmente Plain Text

  1. if(strcmp(ch, "00") == 0)
  2.     //fai qualcosa



funziona di sicuro


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 1:49
Mercoledì, 06/01/2010
Bisogna capirsi ... quando indica "riceve un char" probabilmente vuole dire proprio un char!

Quindi non parliamo di stringhe e 00 è inteso come ASCII NUL.

Oppure intende un puntatore a char (una stringa) e quindi intende "00" come sequenza di due caratteri ASCII ...

Insomma, bisogna che chiarisca ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 8:09
Mercoledì, 06/01/2010
Grazie lorenzo con il tuo modo finalmente funziona!!
Per schiarire dei dubbi io dichiaravo:
char* strHex;
e gli assegnavo un valore con scanf.
ma se io scrivevo strHex == "00" dentro un if non mi dava mai true, non so perchè.
Vi prego di dirmi dove sbagliavo perchè non capisco perchè non funzionava.


Se passi a mac da win non sai cosa ti trovi, ma stai sicuro che non tornerai mai indietro
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:09
Mercoledì, 06/01/2010
Allora non hai un char ma un puntatore a char (una stringa C).

E per confrontare le stringhe non si usa == ma la funzione strcmp.

In ogni caso, attenzione ad usare il puntatore senza avere allocato la memoria per la stringa.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 14:09
Mercoledì, 06/01/2010
meglio che ti studi le stringhe allora.
un puntatore a char (char *pt) è solo l'indirizzo iniziale della lista di caratteri.
quindi usando == confronti l'indirizzo della stringa con "00" e non va bene


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 14:34
Giovedì, 07/01/2010
Si scusate ma in fatto di teoria non so molto mi leggerò una guida.
Grazie a tutti


Se passi a mac da win non sai cosa ti trovi, ma stai sicuro che non tornerai mai indietro
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo