Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
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 ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
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

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
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 ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
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.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
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 ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
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

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

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo