Extraire les mots d'un fichier
Eternaldream
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 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
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,