Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compter le nombre d'occurences d'un caractère dans une chaîne ?

    26 mai 2006 à 20:51:29

    Bonjour,

    Afin de pouvoir utiliser un code différent si plusieurs fichiers ont été sélectionnés ou non dans une common dialog box, j'aimerais compter le nombre d'occurences d'un caractère dans un tableau de char.

    Je m'explique :
    Peut être certains [comme -ed-] m'ont déjà vu demander comment faire dans le cas d'un multiselecting, mais le code proposé ne marche que dans ce cas ci. DONC j'aimerais compter le nombre de caractères NULL dans la string retournée par cette CDB, et si :

    - Il y a plus d'une occurence (pour prémunir des noms de chansons du type "01 - Machin.mp3"), il y a plusieurs fichiers sélectionnés dont les noms sont séparés par NULL -> utiliser le code proposé par -ed-

    - Il y en a aucune, ou 1 : Simplement récupérer le chemin dans un tableau de char.

    Connaîtriez vous pareille fonction ?

    Merci d'avance.

    [C'est une idée que j'ai eue mais si vous avez une autre technique pour différencier les cas UniqueSelection et MultiSelection, ne vous gênez pas)
    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2006 à 21:09:57

      Fais un effort, on comprend rien à ce que tu dis !!!
      De quelle lib tu parles ? Tu te réfères à des topics précédants, qu'on a pas forcément lu !

      Citation : kidpaddle2

      DONC j'aimerais compter le nombre de caractères NULL dans la string


      En C, une chaine est définie comme une succession de caractères terminée par le caractère NULL, noté '\0'. Donc il ne peut pas y avoir ce caractère dans la chaine (je dis bien en C).
      Donc tu racontes n'importe quoi, merci d'apporter quelques précisions.
      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2006 à 21:23:40

        Je vous ai déjà donné les indications necessaires : la commmon dialog box, qui est une boite de dialogue commune (comme son nom l'indique) que l'on peut appeler et récupérer dans une structure OPENFILENAME, dans son membre .lpstrFile le nom (ici) des chansons, ou de la chanson sélectionnée(s) sous la forme :
        ofn.lpstrFile = szFile

        , où szFile est un tableau de char et dont son contenu, après appel de la CDB est de la syntaxe suivante :
        //cas d'un fichier sélectionné
        szFile = "C:\\Music\\Machin.mp3"
        //cas de plusieurs fichiers sélectionnés
        szFile = "C:\\Music\0Machin1.mp3\0Machin2.mp3\0Machin3.mp3\00"


        Alors excuse moi remram mais je sais ce que je dis, donc arrête de me dire que je dis n'importe quoi si tu sais même pas de quoi je parle.
        Et puis, si vous avez une autre technique, faites m'en part ;)

        [pour ceux qui ne le savent pas, une common dialog box peut etre appelée en winAPI, même si je demande des infos qui ne demandent pas cette connaissance.(pur C)]
        • Partager sur Facebook
        • Partager sur Twitter
          27 mai 2006 à 3:49:02

          Citation : remram44

          Citation : kidpaddle2

          DONC j'aimerais compter le nombre de caractères NULL dans la string


          En C, une chaine est définie comme une succession de caractères terminée par le caractère NULL, noté '\0'. Donc il ne peut pas y avoir ce caractère dans la chaine (je dis bien en C).
          Donc tu racontes n'importe quoi, merci d'apporter quelques précisions.


          Ce n'est pas n'importe quoi. Chez Microsoft, ils ont inventé la 'multichaine' :

          "abc\0def\0ghi\0\0"
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
          Anonyme
            27 mai 2006 à 11:00:37

            Tu passerais moins de temps à coder cette fonction qu'à essayer de la chercher :-°

            Une simple boucle, tant qu'on ne trouve pas deux \0 à la suite, on compte combien de \0 on trouve...

            Au fait, \0 c'est pas du tout la même chose que NULL. '\0' est un caractère, de type int entre ' ' ou char dans une chaîne, alors que NULL est une expression de type pointeur void.
            • Partager sur Facebook
            • Partager sur Twitter
              27 mai 2006 à 14:19:30

              J'ai dû confondre... merci de l'info (j'avais notamment rencontré "NULL-terminated" string au tout début de mon apprentissage, et j'en avais alors déduit que '0' était le caractère NULL...

              A la limite en voyant vos réponse, je me suis dit qu'il y avait juste à rechercher '00' dans la string. Si c'est vrai, plusieurs fichiers ont été sélectionnés, sinon non ;)

              Je vais voir ça ... en fait j'ai posté pour adapter le code de -ed- à tous les cas, sans pour autant rechrcher des caractères etc ... mais c'est à mon avis le plus simple.

              Il ne me restera plus qu'à trouver un moyen de pouvoir rajouter des fichiers à la playlist à chaque open DialogBox, et à trouver un moyen d'utiliser le fonctionnement des "régions".

              Si vous n'avez rien d'autre à faire, vous pourriez par exemple m'aider pour le premier cas :p
              • Partager sur Facebook
              • Partager sur Twitter

              Compter le nombre d'occurences d'un caractère dans une chaîne ?

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown