Comment puis-je vérifier si char*
la variable pointe-t-elle sur une chaîne vide?
Vérifiez 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 pouvez mettre ces deux contrôles dans une fonction pour le rendre pratique et facile à réutiliser.
Edit: Dans l'instruction if, on peut lire 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 ...".
Le &&
combine simplement les deux conditions. C'est fondamentalement comme dire ceci:
if (c != NULL) { /* AND (or &&) */
if (c[0] == '\0') {
printf("c is empty\n");
}
}
Vous voudrez peut-être obtenir un bon livre de programmation en C si cela ne vous semble pas clair. Je pourrais recommander un livre intitulé "Le langage de programmation C".
La version la plus courte équivalente à celle ci-dessus serait:
if (c && !c[0]) {
printf("c is empty\n");
}
Ma méthode préférée:
if (*ptr == 0) // empty string
Probablement plus commun:
if (strlen(ptr) == 0) // empty string
Vérifiez le pointeur pour NULL
puis utilisez strlen
pour voir s’il renvoie 0
.NULL
check est important car passer NULL
un pointeur sur strlen
invoque un comportement non défini.
Une chaîne vide a un seul octet nul. Alors testez if (s[0] == (char)0)
Je préférerais utiliser la fonction strlen car les fonctions de bibliothèque sont implémentées de la meilleure façon.
Donc, j'écrirais si (strlen (p) == 0) // Chaîne vide
Donnez-lui une chance:
Essayez d'obtenir une chaîne via function obtient (chaîne), puis vérifiez la condition comme si (chaîne [0] == '\ 0')
if (!*ptr) { /* empty string */}
de même
if (*ptr) { /* not empty */ }