Repository 32bit  Forum
Repository 64bit  Wiki

comparazione stringhe in if (linguaggio c)

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza dell'ultima regola porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

comparazione stringhe in if (linguaggio c)

Messaggioda NicoMetal » lun giu 11, 2012 23:54

È possibile fare una comparazione di stringhe in un if?
una cosa del tipo:

char *p="ciao";

if( p == "ciao" )
...
Avatar utente
NicoMetal
Linux 2.4
Linux 2.4
 
Messaggi: 366
Iscritto il: dom mag 02, 2010 18:21
Località: Verona
Nome Cognome: Nicola
Slackware: 13.37
Kernel: 3.2.2
Desktop: FluxBox - xfce

Re: comparazione stringhe in if (linguaggio c)

Messaggioda Blallo » mar giu 12, 2012 0:01

#include <string.h>

if (strcmp(p, "ciao) == 0))
{
...
}

PS: ricorda che anche un char senza asterisco è un puntatore ad un array di caratteri. Quindi, a meno che non vuoi allocare un vettore di stringhe, non usare il char*.
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!
Avatar utente
Blallo
Packager
Packager
 
Messaggi: 3054
Iscritto il: ven ott 12, 2007 11:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14 x64 / 12.2
Kernel: 3.2.x
Desktop: Xfce

Re: comparazione stringhe in if (linguaggio c)

Messaggioda NicoMetal » mar giu 12, 2012 0:28

jimmy_page_89 ha scritto:#include <string.h>

if (strcmp(p, "ciao) == 0))
{
...
}

PS: ricorda che anche un char senza asterisco è un puntatore ad un array di caratteri. Quindi, a meno che non vuoi allocare un vettore di stringhe, non usare il char*.

Grazie ;)
Avatar utente
NicoMetal
Linux 2.4
Linux 2.4
 
Messaggi: 366
Iscritto il: dom mag 02, 2010 18:21
Località: Verona
Nome Cognome: Nicola
Slackware: 13.37
Kernel: 3.2.2
Desktop: FluxBox - xfce

Re: comparazione stringhe in if (linguaggio c)

Messaggioda robbybby » mar giu 12, 2012 4:44

jimmy_page_89 ha scritto:PS: ricorda che anche un char senza asterisco è un puntatore ad un array di caratteri. Quindi, a meno che non vuoi allocare un vettore di stringhe, non usare il char*.


Mi sa che ti sbagli.
Codice: Seleziona tutto
char *pStr = "pippo";  //ok: pStr è un puntatore a char
char c = "pippo";      //non ok: c è un carattere (un byte), non puoi assegnarlo a un puntatore, quale è "pippo"
//ma
char pStr1[10];        //ok: pStr1 è un puntatore a char, e allochi spazio per 10 caratteri. pStr1 punta al primo carattere dell'array allocato
Avatar utente
robbybby
Linux 3.x
Linux 3.x
 
Messaggi: 1077
Iscritto il: sab dic 16, 2006 11:48
Località: Fra Trantor e Terminus
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5

Re: comparazione stringhe in if (linguaggio c)

Messaggioda Blallo » mar giu 12, 2012 6:21

robbybby ha scritto:Mi sa che ti sbagli.

Giusto.
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!
Avatar utente
Blallo
Packager
Packager
 
Messaggi: 3054
Iscritto il: ven ott 12, 2007 11:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14 x64 / 12.2
Kernel: 3.2.x
Desktop: Xfce


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti