Comparer l'égalité de char[] dans C
J'ai deux variables:
char charTime[] = "TIME";
char buf[] = "SOMETHINGELSE";
Je veux vérifier si ces deux sont égaux... à l'aide de charTime == buf
ne fonctionne pas.
Que dois-je utiliser, et quelqu'un peut m'expliquer pourquoi à l'aide de ==
ne fonctionne pas?
Serait-ce différent dans le C et le C++?
btw:
char[]
est un type incomplète. charTime
est en fait de type char[5]
et buf
est en fait de type char[14]
. Le compilateur qui compte pour nous, dans ce cas remplissez le type.OriginalL'auteur rksprst | 2010-03-13
Vous devez vous connecter pour publier un commentaire.
C++ et C (supprimer
std::
pour C):Mais le vrai C++ façon:
À l'aide de
==
ne fonctionne pas car il essaie de comparer l'adresse du premier caractère de chaque tableau (évidemment, ils ne sont pas égales). Ne pas comparer le contenu de deux tableaux.==
de le faire réellement un contenu de comparaison, à la place du "par défaut"char[]
's==
, qui est la référence de comparaison.N'auriez-vous pas besoin de #définir votre type bool en C?
C99 a un
bool
type. Donc, vous auriez probablement seulement besoin de le définir avec MSVC.comme Johannes Rössel dit, C99 a un
bool
type. Vous devez inclure<stdbool.h>
pour être en mesure d'utiliserbool
bien que, ou vous devez utiliser le type_Bool
(qui lebool
sera un#define
) ou tout simplementint
.OriginalL'auteur Johannes Schaub - litb
En c, vous pouvez utiliser la fonction strcmp de chaîne.h, elle renvoie 0 si elles sont égales
OriginalL'auteur zellio
Dans une expression à l'aide de
==
les noms dechar
tableaux de désintégration danschar*
pointant vers le début de leurs tableaux. La comparaison est ensuite effectuer en termes de valeurs des pointeurs eux-mêmes et non pas le contenu réel des tableaux.==
retournera seulement vrai pour les deux pointeurs pointant vers le même emplacement et false dans le cas contraire, même s'ils pointent à deux tableaux avec un contenu identique.Ce que vous avez besoin est la fonction de la bibliothèque standard
strcmp
. Cette expression renvoie la valeur true si les tableaux contiennent le même contenu (jusqu'à la fin null caractère qui doit être présente dans les deux tableaux bofstrcmp
de travailler en toute sécurité).OriginalL'auteur CB Bailey
Vérifier dans une boucle for. Obtenir le code ASCII du caractère de chaque personnage une fois qu'ils changent ils ne sont pas égaux.
Il n'y a reportez-vous à Johannes Schaub - litb post.
OriginalL'auteur
Vous êtes à la vérification de l'identité
charTime
etbuf
. Pour vérifier l'égalité, une boucle sur chaque caractère dans un tableau et de les comparer avec les caractères dans l'autre tableau.OriginalL'auteur lajuette