Extraire les mots d'un fichier

Eternaldream Messages postés 3 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
je veux extraire les mots d'un fichier et les mettre dans un tableau
voici le il ne fonctionne pas svp aidez moi
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
FILE* fichier=fopen("fich.txt","r");
char* caractereActuel;
char* nouveau;
char terme[100];
int i=0;
if(fichier!=NULL)
{
    do
    {
        caractereActuel=fgetc(fichier);
    
        if((caractereActuel== ' ') || (caractereActuel== '\n') || (caractereActuel==','))
            {
                terme[i]=nouveau;
                i++;
            }
            else
               nouveau=strcat(nouveau,caractereActuel);
    } while (caractereActuel != EOF);
}
else
{
    printf("fichier non ouvert!!");
     fclose(fichier);
}
for(i=0;i<100;i++)
    {
           printf("s\n",terme[i]);
    }
return 0;
}

1 réponse

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Pourquoi enlever le "Bonjour" ?? ==> https://www.commentcamarche.net/infos/25855-charte-d-utilisation-de-commentcamarche-net-respect-d-autrui/#politesse

    int main()
    Le bon prototype est : int main(void)

    caractereActuel=fgetc(fichier);
    fgetc() renvoie un caractère alors que caractereActuel est de type char*. Que souhaites-tu faire ?

    terme[i]=nouveau;
    nouveau n'est pas initialisé. De plus nouveau est de type char* alors que terme[i] est de type char. Que souhaites-tu faire ?

    nouveau=strcat(nouveau,caractereActuel);
    nouveau n'est pas initialisé. De plus, il ne faut pas mettre nouveau=...
    caractereActuel

    fclose(fichier);
    Tu fermes le fichier si tu n'as pas réussi à l'ouvrir. Pas logique. Il faut plutôt le fermer s'il est ouvert et que tu en as plus besoin.

    for(i=0;i<100;i++)
    {
    printf("s\n",terme[i]);
    }

    terme[i] est de type char. Donc soit tu affiches %c plutôt que %s (d'ailleurs tu as oublié le %). Mais il ne faut pas afficher les 100 caractères seulement ceux avant le '\0'.
    Pourquoi ne pas faire simplement : printf("%s\n", terme); ? Ou encore plus simple puts(terme);

    Avec la dernière ligne, je pense avoir compris ce que tu voulais faire. Il faut partir d'un tableau à 2 dimensions. Sinon, tu peux regarder du côté de strtok().

    Cdlt,
    0