11
votes

Comparer l'égalité de char [] en c

J'ai deux variables: xxx

Je veux vérifier si ces deux sont égaux ... en utilisant Charttime == buf ne fonctionne pas.

Que dois-je utiliser et quelqu'un peut-il expliquer pourquoi utiliser == ne fonctionne pas?

Cette action serait différente dans C et C ++?


1 commentaires

BTW: Char [] est un type incomplet. CHARTIME est en fait de type char [5] et buf est en fait de type char [14] . Le compilateur compte pour nous dans ce cas pour compléter le type.


5 Réponses :


0
votes

Vérifiez-les dans A pour boucle. Obtenez les numéros ASCII pour chaque caractère une fois qu'ils changent, ils ne sont pas égaux.


2 commentaires

Est-ce le moyen le plus simple de le faire? Doit être quelque chose de mieux?


Il est fait référence à Johannes Schaub - Litb Post.



23
votes
std::string charTime = "TIME", buf = "SOMETHINGELSE";
bool equal = (charTime == buf);

4 commentaires

En effet, C ++ permet une surcharge de l'opérateur, qui surcharge le == pour effectuer une comparaison de contenu, à la place du "code" char [] s == , qui est la comparaison de référence.


N'avez-vous pas besoin de #define votre type Bool pour C aussi?


@MIM: C99 a un type bool . Donc, vous auriez probablement seulement besoin de le définir avec MSVC.


@MIM, comme le dit Johannes Rössel, C99 dispose d'un type BOOL . Vous devez inclure pour pouvoir utiliser bool ou vous devez utiliser le type d'intégré _bool ( que le bool sera un #define pour) ou juste uni int .



2
votes

in c Vous pouvez utiliser la fonction STRCMP à partir de String.h, il renvoie 0 si elles sont égales xxx


0 commentaires

0
votes

Vous vérifiez l'identité Charntime et buf . Pour vérifier l'égalité, bouclez sur chaque caractère dans un tableau et comparez-les avec le caractère associé dans l'autre matrice.


0 commentaires

1
votes

dans une expression utilisant == code> Les noms de Char code> Tableaux décrivent dans char * code> pointant vers le début de leurs tableaux respectifs. La comparaison est ensuite effectuée en termes de valeurs des pointeurs eux-mêmes et non du contenu réel des matrices.

== code> ne reviendra que TRUE pour deux pointeurs pointés vers le même emplacement et faux sinon , même s'ils montrent deux tableaux avec des contenus identiques. p>

Ce dont vous avez besoin est la fonction de bibliothèque standard STRCMP code>. Cette expression évalue comme true si les matrices contiennent le même contenu (jusqu'à la prise NULL de terminaison qui doit être présente dans les deux tableaux FR STRCMP code> pour fonctionner en toute sécurité). P>

strcmp(charTime, buf) == 0


0 commentaires