Extraire les mots d'un fichier

Fermé
Eternaldream Messages postés 2 Date d'inscription samedi 8 mars 2014 Statut Membre Dernière intervention 21 août 2014 - Modifié par Chris 94 le 27/04/2014 à 01:54
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 27 avril 2014 à 13:17
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;
}
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
27 avril 2014 à 13:17
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