Extraire les mots d'un fichier
Eternaldream
Messages postés
3
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
je veux extraire les mots d'un fichier et les mettre dans un tableau
voici le il ne fonctionne pas svp aidez moi
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:
- Extraire les mots d'un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Extraire une video youtube - Guide
1 réponse
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,
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,