comparaison de chaine de caractères
salut j'ai une erreur de segmenation dans ce code:
Code:
1 2 3 4 5 6 7 8 9 10
| int main(int argc, char *argv[])
{
if(argc ==2)
{
if(argv[1]=="-b" || argv[1] =="--binaire") types=1
------
}
return 0;
} |
Lors de l'exécution du programme la comparasion n'est pas effectuée je ne comprends pas pkoi?
Merci de m'aider
Re: comparaison de chaine de caractères
Citation:
Envoyé par lecyberax
salut j'ai une erreur de segmenation dans ce code:
int main(int argc, char *argv[])
{
if(argc ==2)
{
if(argv[1]=="-b" || argv[1] =="--binaire") types=1
------
}
return 0;
}
Lors de l'exécution du programme la comparasion n'est pas effectuée je ne comprends pas pkoi?
Merci de m'aider
Bonjour,
Pour comparer deux chaînes de caractères, il faut utiliser la fonction strcmp et non ==.
Merci de penser à :tagcode:,
Jc
Re: comparaison de chaine de caractères
Citation:
Envoyé par fearyourself
Pour comparer deux chaînes de caractères, il faut utiliser la fonction strcmp et non ==.
Merci au C++ et aux "strings" qui permettent ce genre de facilité (==) !!
Re: comparaison de chaine de caractères
Citation:
Envoyé par niglo
Citation:
Envoyé par fearyourself
Pour comparer deux chaînes de caractères, il faut utiliser la fonction strcmp et non ==.
Merci au C++ et aux "strings" qui permettent ce genre de facilité (==) !!
Au contraire... Amen au C pour avoir bien séparer les deux.
Sinon comment faire pour séparer le fait que les objet sont les mêmes et leur contenu est le même?
Jc
tableau de chaine de caractères
une declaratuion de genre me donne des soucis
char ** tab; /* tableau de chaine de caractère */
/* initialisation */
*tab[0]="salut";
*tab[1]="comment tu vas?";
me produit un erreur de transtypage ke j ene comprend pas...
Re: tableau de chaine de caractères
Citation:
Envoyé par lecyberax
une declaratuion de genre me donne des soucis
char ** tab; /* tableau de chaine de caractère */
/* initialisation */
*tab[0]="salut";
*tab[1]="comment tu vas?";
me produit un erreur de transtypage ke j ene comprend pas...
C'est un autre sujet et ne devrait pas être posté sur le même thread...
La réponse est:
*tab[0] est un caractère... Toi tu veux:
Or tu veux assigner une chaîne de caractères...
Il faut donc faire:
Code:
1 2
| tab[0]="salut";
tab[1]="comment tu vas?"; |
Jc
Re: tableau de chaine de caractères
Citation:
Envoyé par lecyberax
une declaratuion de genre me donne des soucis
char ** tab; /* tableau de chaine de caractère */
Je ne vois pas de tableau, mais un pointeur non initialisé.
Citation:
/* initialisation */
*tab[0]="salut";
tab n'est pas initialisé. Le comportement est indéfini.
Citation:
*tab[1]="comment tu vas?";
tab n'est pas initialisé. Le comportement est indéfini.
Re: comparaison de chaine de caractères
Citation:
Envoyé par niglo
Merci au C++ et aux "strings" qui permettent ce genre de facilité (==) !!
C'est parce que tu n'avais pas bien apprehendé ce que voulait dire == avec des objets string en C++/STL
Ils ont utilisé la surcharge d'operateurs, et ça leur a permis de creer des methodes appelées lors de l'utilisation des operateurs classiques du C (+, ==, <, >, [], =, += ....) sur des objets.
Donc == n'est pas une comparaison toute simple mais fait bel et bien appel à une methode de comparaison de chaine (du genre strcmp) dont voici le prototype :
Code:
1 2 3
| template <class charT, class traits, class Alloc>
bool operator==(const basic_string<charT, traits, Alloc>& s1,
const basic_string<charT, traits, Alloc>& s2) |
http://www.sgi.com/tech/stl/basic_string.html
C'est comme ça aussi qu'ils ont fait en sorte qu'on utilise les operateurs de decalage de bits (<<, >>) dans les objets iostream (cout << "Hello")