Biblitheque en c

Bonjour,
comment je peut trouver le lien où je trouverai la plus part de bibliotheques en c?

6 réponses

  1. Contributeur
    Salut jechmaki masudi,

    Si ce que tu cherches, c'est une référence pour la bibliothèque standard du C (ou du C++), ce site est une bonne référence :

    http://www.cplusplus.com/reference/

    Si ce que tu cherches est un site pour trouver toutes les bibliothèques pouvant par ailleurs exister, je ne connais pas un tel site.

    Dal
    0
    1. Merci beaucoup DAL,mais je veux etre maintenant très claire :
      je vois les autres faire des bonnes choses avec des bibliothèque et/ou des headers,mais moi je n'arrive meme pas alors que j'utilise le meme IDE qu'eux (Code::block).parexemple pour l'ejection du lecteur cd de mon ordinateur en utilisant le windows.h,ça ne fonctionne meme pas.

      Est-ce que code::block contient deja tous ces headers?si non comment comment je peux les mettre?

      pardon pour le dérangement mais j'ai vraiment envue de savoir utiliser les bibliotheques et les headers,UN LIVRE PEUT M'AIDER.

      merci
      0
      1. Contributeur
        Pour l'éjection du lecteur de CD, on t'a déjà répondu ici.

        Sous Windows, la fonction mciSendString peut être utilisée pour cela.

        Le prototype de cette fonction est dans l'entête Mmsystem.h, qui est inclus si tu inclue Windows.h.

        Le rôle d'un entête (header) n'est pas de définir la fonction elle même, mais une interface permettant l'usage de cette fonction.

        Comme indiqué dans le message précédent, l'implémentation de cette fonction se trouve dans Winmm.lib sous Windows, qu'il faut lier à ton projet pour que ton programme puisse utiliser effectivement le code implémentant cette fonction.

        Tu peux obtenir ces informations dans la documentation Windows de mciSendString :

        https://docs.microsoft.com/en-us/previous-versions//dd757161(v=vs.85)?redirectedfrom=MSDN

        Requirements
        
        Minimum supported client
        	Windows 2000 Professional [desktop apps only]
        
        Minimum supported server
        	Windows 2000 Server [desktop apps only]
        
        Header
        	Mmsystem.h (include Windows.h)
        
        Library
        	Winmm.lib
        
        DLL
        Winmm.dll
        
        Unicode and ANSI names
        	mciSendStringW (Unicode) and mciSendStringA (ANSI)

        Comme tu le vois, on distingue le "Header" ('l'entête) de la "Library" (la bibliothèque comportant à proprement parler le code assurant l'exécution de la fonction).

        Sur ton Codeblocks, l'installation du compilateur MinGW doit déjà contenir Windows.h à un endroit connu du compilateur. Donc, pour le header, il suffit de mettre #include <windows.h> dans les directives dans ton code source.

        Donc, un code comme cela :
        #include <stdio.h>
        #include <windows.h>
        
        int main()
        {
            printf("Hello CD Player\n");
            if (mciSendString("Set cdaudio door open wait", 0, 0, 0) == 0)
            {
                printf("CD Player opened\n");
            } else
            {
                printf("Error, failed to open the CD Player\n");
            }
        
            return 0;
        }


        Si tu ne fais que cela, lorsque tu tentes de produire un exécutable, tu vas avoir une erreur de liaison indiquant "undefined reference to mciSendString".

        Pour le code correspondant à la fonction mciSendString, tu vas devoir indiquer dans les paramètres de ton projet la référence à Winmm.lib afin que le linker puisse produire un fichier exécutable utilisant le code correspondant.

        Dans Codeblocks, tu fais cela en faisant :

        Project - Build options - Linker settings - Add

        Tu tapes : "Winmm" (sans les guillements), et tu valides.

        Dal
        0
      2. Merci pour l'info,bonne journée?
        0
      3. Contributeur
        Sinon, il y a des instructions plus génériques ici :

        https://forums.commentcamarche.net/forum/affich-37594493-codeblocks-installer-une-bibliotheque-librairie

        pour une méthodologie d'installation d'une bibliothèque compilée non déjà présente sur le système, pour laquelle tu dois indiquer à Codeblocks où se trouvent les entêtes additionnels et où se trouvent les fichiers contenant les bibliothèques compilées à lier à ton projet (et indiquer lesquels)

        Bonne journée aussi :-)

        Dal
        0
    2. Waouh,
      c'est très gentil DAL.

      Merci vraiment beaucoup pour cet explication.

      voici:" Project - Build options - Linker settings - Add ",je l'ignorais,mais je viens de l'essaiyer ça me fabrique le .exe mais MON LECTEUR N'EST PAS TOUJOURS EJECTE.
      0
      1. Contributeur
        Chez moi, cela fonctionne sur une machine XP Pro 32 bits avec un seul lecteur de CD/DVD.

        Dal
        0
    3. Moi,j'ai windows xp pro version 2002 pack 3.
      je viens d'utiliser ce code :

      #include <stdio.h>
      #include <windows.h>

      int main()
      {
      printf("Hello CD Player\n");
      if (mciSendString("Set cdaudio door open wait", 0, 0, 0) == 0)
      {
      printf("CD Player opened\n");
      } else
      {
      printf("Error, failed to open the CD Player\n");
      }

      return 0;
      }

      En utilisant votre correction :

      Project - Build options - Linker settings - Add
      0
      1. Contributeur
        et lors de l'exécution, que dit le programme :

        "CD Player opened" ou ""Error, failed to open the CD Player" ?

        as-tu plusieurs lecteurs ?

        Dal
        0
    4. Salut DAL,pardons je n'étais pas en ligne...

      A l'éxecution ça m'affiche :

      "Hello CD player"
      "CD Player opened"

      Je n'ai qu'un seul lecteur CD.
      0
      1. Contributeur
        C'est bizarre, car la commande MCI a l'air de l'exécuter sans erreurs, du point de vue de Windows.

        Et si tu essayes ceci, cela donne quoi :

        #include <stdio.h>
        #include <windows.h>

        int main()
        {
        char szReturnString[500];
        char szSendString[500];
        long lNumOfDevice,l;
        char *p;

        if(mciSendString("Sysinfo all quantity", szReturnString, sizeof(szReturnString), NULL) != 0)
        {
        fprintf(stderr,"cannot query Sysinfo all quantity\n");
        return(EXIT_FAILURE);
        }

        lNumOfDevice = strtol(szReturnString, &p, 10);

        for(l = 1; l <= lNumOfDevice; l++)
        {
        wsprintf(szSendString,"sysinfo all name %d",l);
        mciSendString(szSendString, szReturnString, sizeof(szReturnString), NULL);
        printf("MCI Device(%ld):%s\n", l, szReturnString);
        }

        mciSendString("capability cdaudio can eject", szReturnString, sizeof(szReturnString), NULL);
        printf("capability cdaudio can eject: %s\n", szReturnString);

        return 0;
        }
        Chez moi, cela donne :

        MCI Device(1):AVIVideo
        MCI Device(2):CDAudio
        MCI Device(3):Sequencer
        MCI Device(4):WaveAudio
        MCI Device(5):MPEGVideo
        capability cdaudio can eject: true

        Ce code énumère les matériels MCI, et teste si le matériel "cdaudio" est capable d'éjection.

        Dal
        0
      2. bonjour DAL

        Ca fonctionne mais mon lecteur n'est pas toujours ejecté
        0
      3. Contributeur
        Je suppose que tu veux dire que tu as testé le code ci-dessus et que ton lecteur est bien énuméré et que le résultat de "capability cdaudio can eject" est bien "true". C'est bien cela ?

        Il y a un truc qui cloche, ou qui m'échappe :-/

        Et sous Windows, lorsque dans l'explorateur Windows tu cliques droit sur le lecteur et sélectionne "Ejecter", est-ce que cela fonctionne ?

        Il y a un bouton d'éjection sur ton lecteur, fonctionne-t-il ?

        Sinon, sur certains lecteurs, il y a aussi un moyen d'éjection purement mécanique : en introduisant un trombone déplié ou un autre objet suffisamment petit et rigide dans un petit trou prévu à cet effet sur la façade avant. A n'utiliser normalement que si le lecteur est mort et qu'un disque est resté coincé dedans... Il m'est arrivé de faire cela par le passé. Mais, bon, comme tu n'a pas l'air de dire que tu as un problème d'éjection par des moyens conventionnels, je doute que cela soit ce que tu cherches (ou alors tu nous a caché des choses).

        Et puis, on est un peu loin de ta question initiale, je trouve :-D

        Dal
        0
    5. Bonjour DAL,

      Je suis très comptant,le programme d'éjection du lecteur CD a enfin fonctionné.
      Mais cela était possible dans un autre system , pas le mien.

      Moi,j'ai windows xp pro version 2002 pack 3.

      Cela était possible dans windows 8.
      0
      1. Contributeur
        Je suis content pour toi aussi :-)

        Bonne découverte des joies de l'API Windows !

        Je te confirme que, de mon côté, le code fonctionne sur un système XP Pro à jour. J'ignore la raison pour laquelle cela ne marche pas chez toi.

        Cette API devrait fonctionner sur toutes versions de Windows depuis Windows 2000.

        Dal
        0
      2. je cherche aussi pourquoi,
        mais pour l'instant j'utilise windows vista et ca fonctionne très bien
        0