Comment faire pour voir si un élément est null dans un tableau en C?
Comment puis-je vérifier pour voir si un élément d'un tableau est vide en C?
if(array[i] == NULL)
Ne semble pas fonctionner.
- Ce qui ne fonctionne pas? Qu'une seule ligne de code n'est pas d'une grande aide. Qu'est-ce que
array
, où il est initialisé? - Pourriez-vous définir ce que vous entendez par "ne fonctionne pas" -- n'est-il pas compiler? Est le comportement d'exécution différente de celle que vous attendiez? (Peut-être que vous avez oublié d'initialiser le contenu du tableau de la valeur NULL en premier?)
- Je pense que c'est le problème cdhowie comme j'ai l'habitude de java tout est initialisé à null. Qu'est-ce que l'initialisation par défaut d'un élément dans C.
- Rien. Ou plutôt des ordures. C ne fait pas d'initialisation pour vous, si vous n'avez pas non plus, alors c'est juste ce qui arrive à être présent dans la mémoire au moment de la commande.
- Essayez d'utiliser
memset
la prochaine fois. Il n'est pas utilisé par défaut car vous devrez peut-être mettre quelque chose d'autre là-bas et n'ont pas besoin de ce traitement. - vous avez vraiment besoin de modifier votre question, de sorte que nous savons a) quel type
array
est et (b) commentarray
est en cours d'initialisation.
Vous devez vous connecter pour publier un commentaire.
Que voulez-vous dire avec vide?
Quand un C programme est exécuté, les variables que vous n'initialisez pas explicitement avons obtenu des valeurs imprévisibles.
Vous devez définir l'ensemble de vos cellules de tableau à NULL (ou à 0 ou à la valeur que représente le vide dans la logique du programme) et puis vous pouvez le vérifier dans le chemin que vous avez fait:
int *array[3] = { NULL }
devrait suffire à annuler tous les éléments du tableau.NULL
pourrait être différent de 0.De répondre à la Question:
Ce que vous avez posté est le bon code.
Élaboration:
Si elle "ne semble pas fonctionner", peut-être que le problème ne se trouve pas à cet endroit dans votre code. Si vous souhaitez poster un exemple plus complet de ce que vous avez, le code du comportement attendu et le comportement réel, nous pouvons être en mesure de vous aider.
En supposant que
array
est en effet un tableau de pointeurs, la seule ligne de code fourni doit en effet vérifier que l'élément à l'indexi
est NULL.Notez cependant que si vous tableau n'est pas initialisé correctement (c'est à dire: donner une valeur initiale à chaque cellule), la matrice de la plupart des contient probablement des ordures et que votre état sera très probablement faux.
Au début, je pensais,
"Ils ont besoin d'utiliser l'arithmétique des pointeurs de sorte que le
objet de ne pas obtenir auto de-référencé par l'
"[ ]" opérateur.
Puis j'ai réalisé, non... Tableaux en C n'ont pas
null fentes.
De conclure, le demandeur est:
L'aide d'un tableau de structures.
De l'utiliser comme si c'était un tableau de
des pointeurs vers des structures.
peoro la solution de est assez bonne. Mais je vous recommande de le modifier un peu.
Ajouter un ".il existe" des biens de votre structure si vous voulez faire le paresseux/moyen simple.
Simple n'est pas une mauvaise chose, plus le nombre de pièces dans une machine le plus de choses qui peuvent mal se passer.
Code ci-dessous montre deux choses:
Semblant un tableau fragmenté à l'aide de peoro de la solution .existe drapeau de modification.
Un réel tableau fragmenté en utilisant le double pointeurs.
Alors que je suis à elle. Si vous souhaitez exécuter à partir de la ligne de commande, nom du fichier:
"NAE.C99", puis créez un fichier bash appelé "NAE.SH" et de mettre cela en elle.
Double-cliquez sur le script à exécuter, ou l'utilisation de "./NAE.SH" où qu'il se trouve dans votre
git bash terminal.
C'est C99 code par le chemin. J'ai essayer de l'écrire en évitant toute C99 caractéristiques spécifiques si.