Equivalent "in_array" de PHP en C

 

Tutoriel présenté par : Oktopuss
Date d'écriture : 24 juillet 2016
Date de révision : -

 

   Bonjour à tous ! angel

   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. wink
   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 ! crying
   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. wink
   J'espère que cela pourra aider quelqu'un d'autre.

           A plus sur Meruvia ! smiley

                                  Oktopuss

 

 

 

Connexion

CoalaWeb Traffic

Today49
Yesterday274
This week1120
This month4794
Total1744001

27/04/24