Language c

Bonjour,
je doit faire une fonction qui cherche un mot donné dans un texte et le met en surbrillance.
ps: le texte et le mot seront saisie par l'utilisateur
je programme en language c.
merci d'avance

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Pour rechercher une sous-chaîne dans une chaîne:
     #include "string.h"
    char* strstr (const char* chaine, const char* sousChaine);
    Retourne une pointeur sur la 1ère occurence, NULL sinon.
    Pour ce qui est de la surbrillance, je sèche lamentablement.
    1. Modérateur
      Salut,

      Un exemple sous linux
      #include<stdio.h>
      #define SURBRILLANCE     "\033[0;47m"
      #define COULEUR_PAR_DEFAUT "\033[0;m"
      
      int main()
      {
              printf("%ssalut%s tout le monde\n",
                      SURBRILLANCE,COULEUR_PAR_DEFAUT);
              return 0;
      }
      Exemple exécution https://www.cjoint.com/?bkuAxFUJki
      1. merci mais le mot que je dois mettre en surbrillance c'est l'utilisateur qui doit le donner
        1. Modérateur
          Salut,

          Je l'ai bien compris ;-)

          Ben, il te reste à combiner ce que t'as donné loupius avec mon exemple
          Si jamais ça ne marche pas ton code, tu peux le mettre ici pour voir.
          1. Modérateur
            Re,

            lami20j@debian:~/trash$ cat ccm28_surbrillance.c
            #include<stdio.h>
            #include<string.h>
            
            #define SURBRILLANCE     "\033[0;47m"
            #define COULEUR_PAR_DEFAUT "\033[0;m"
            
            int main()
            {
                    char s[255];
                    char mot[20];
                    int i,j,k;
                    int test=0;
            
                    printf("Entrez la phrase : ");
                    fgets(s,255,stdin);
                    printf("Mot à chercher : ");
                    fgets(mot,20,stdin);
            
                    for(i=0;s[i] != '\n';++i){
                            for(j=i,k=0;mot[i]!='\n' && s[j]==mot[k];++j,++k)
                                    ;
                            if(k>0 && mot[k]=='\n'){
                                    mot[k]='\0';
                                    test=1;
                                    printf("%s%s%s trouvé\n",
                                            SURBRILLANCE,mot,COULEUR_PAR_DEFAUT);
                            }
                    }
                    if(test==0)
                            printf("Pas de correspondance!\n");
                    return 0;
            }
            
            Exécution https://www.cjoint.com/?bkwOOf6eHK