Comment puis-je vérifier si char*
pointe vers une chaîne vide ?
Notez que la deuxième possibilité, "plus courante", est également inutilement plus lente.
Comment puis-je vérifier si char*
pointe vers une chaîne vide ?
Vérifier si le premier caractère est ' \0 '. Vous devriez aussi probablement vérifier si votre pointeur est NULL.
char *c = "";
if ((c != NULL) && (c[0] == '\0')) {
printf("c is empty\n");
}
Vous pourriez placer ces deux contrôles dans une fonction pour la rendre pratique et facile à réutiliser.
Éditer : L'instruction if peut être lue comme suit : "Si c n'est pas zéro et que le premier caractère du tableau de caractères 'c' n'est pas '". \0 ou zéro, alors...".
El &&
combine simplement les deux conditions. En gros, c'est comme si on disait ceci :
if (c != NULL) { /* AND (or &&) */
if (c[0] == '\0') {
printf("c is empty\n");
}
}
Vous pouvez vous procurer un bon livre de programmation en C si cela n'est pas clair pour vous. Je pourrais vous recommander un livre intitulé "Le langage de programmation C".
La version la plus courte équivalente à ce qui précède serait :
if (c && !c[0]) {
printf("c is empty\n");
}
@jpalecek, la lenteur n'a pas souvent d'importance et strlen
sera plus facile à comprendre si vous n'êtes pas habitué à la première forme.
@Adban, sur ce site, la meilleure façon de remercier quelqu'un est d'appuyer sur la flèche vers le haut à côté de la réponse :)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.