Equivalent "in_array" de PHP en C
Tutoriel présenté par : Oktopuss
Date d'écriture : 24 juillet 2016
Date de révision : -
Bonjour à tous !
Je travaille actuellement sur les tableaux, et je cherchais un moyen de vérifier si une valeur existe dans un tableau en utilisant une fonction.
En PHP, cette fonction s'appelle in_array. Cela permet d'indiquer si la valeur est présente dans le tableau.
Je n'ai pas trouvé d'équivalent en C, alors j'ai créé ma propre fonction, que voici :
int inArray(int nb, int array[], int taille) { int r = 0, i = 0; for(i = 0; i < taille; i++) { if(array[i] == nb) r = 1; } return r; }
nb correspond à la valeur recherchée, array correspond au tableau travaillé, et taille correspond à la taille du tableau en question.
J'ai bien tenté de faire un :
taille = sizeof(array) / sizeof(int);
...pour connaitre la longueur du tableau dans la fonction, mais ça ne fonctionne pas !
Voici le résultat avec des tests :
#include <stdio.h>
#include <stdlib.h>
int inArray(int nb, int array[], int taille);
int main()
{
int nb = 0, n = 0, i = 0, test = 0, taille = 10;
int array[taille];
n = sizeof(array) / sizeof(int);
printf("Le tableau contient %d cases.\n\n", n);
for(i = 0; i < taille; i++)
{
nb = i + 1;
array[i] = nb;
printf("array[%d] = %d\n", i, nb);
}
printf("\n");
test = inArray(7, array, taille);
if(test)
printf("- 7 est dans le tableau.\n");
else
printf("- 7 n'est pas dans le tableau.\n");
test = inArray(37, array, taille);
if(test)
printf("- 37 est dans le tableau.\n");
else
printf("- 37 n'est pas dans le tableau.\n");
test = inArray(70, array, taille);
if(test)
printf("- 70 est dans le tableau.\n");
else
printf("- 70 n'est pas dans le tableau.\n");
test = inArray(2, array, taille);
if(test)
printf("- 2 est dans le tableau.\n");
else
printf("- 2 n'est pas dans le tableau.\n");
return 0;
}
int inArray(int nb, int array[], int taille)
{
int r = 0, i = 0;
for(i = 0; i < taille; i++)
{
if(array[i] == nb)
r = 1;
}
return r;
}
Le résultat en image :
Voilà c'est tout bête, mais ça m'est bien utile.
J'espère que cela pourra aider quelqu'un d'autre.
A plus sur Meruvia !
Oktopuss