mp

a marqué ce sujet comme résolu.

Tu peux par exemple t'arranger pour avoir ton fichier constamment trié. Dès lors, tu utilises fgets (qui ne récupère pas du tout un mot mais le nombre d'octets que tu lui demandes s'il ne trouve pas de retour à la ligne ou EOF) et tu compares.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LONGUEUR_MAX_MOT 50

void conjuguer(char *);

int main(void)
{
    char verbe[] = "croitre";
    int continuer_recherche = 1;
    char mot[LONGUEUR_MAX_MOT];
    FILE *irreguliers = fopen("irreguliers.txt", "r");
    if(irreguliers == NULL)
        return EXIT_FAILURE;
    while((fgets(mot, LONGUEUR_MAX_MOT, irreguliers)) != NULL && continuer_recherche)
    {
        mot[strlen(mot)-1] = '\0';
        int comp = strcmp(verbe, mot);
        if(comp == 0)
            conjuguer(mot);
        continuer_recherche = !(comp < 0);
    }
    fclose(irreguliers);
    return EXIT_SUCCESS;
}
+0 -0
1
mot[strlen(mot)-1] = '\0';

Juste pour dire, cette solution pose problème dans le cas où une ligne n'est pas terminée par une fin de ligne (c'est possible pour la dernière ligne d'un fichier) puisque tu supprimes un caractère composant cette dernière. Il est préférable de recourir à la fonction strchr() pour détecter et éventuellement supprimer un caractère \n.

1
2
3
4
char *nl = strchr(mot, '\n');

if (nl != NULL)
        *nl = '\0';
+0 -0

Yep, j'ai supposé que 50 caractères étaient suffisants pour stocker un verbe dans ma solution et que le fichier était bien encodé. Mais Taurre a tout à fait raison.

+0 -0

Je suppose donc que tu affiches tes messages dans la console par défaut de Windows. Dans ce cas, il n'est possible (du moins, j'en doute) d'afficher des caractères en gras dans la console grâce à bibliothèque standard du langage C.

Il reste toutefois possible de changer la couleur des caractères pour mettre des mots en évidence, mais toujours pas avec la bibliothèque standard. Tu peux jeter un coup d’œil à la petite bibliothèque conio.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte