Programme en c qui compte le nombre d'occurence d'un mot
akademia
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
bonjour alor voila mon problemme j'ai envie faire un programme qui verifie le nombre d'apartion d'un mot dans un fichie texte ligne par ligne j'ai donc utiliser la fonction fgets et strtok et strcmp voila mon code
desole c mal ordone et y'a des declaration inutile
mon problemme est que le derinier mot de chaque ligne lorsqu'il n'est pas suivi par un blanc un point ou virgule..
n'est pas comptabilise dans le nombre d'occurence et pourtant j'ai mis \0(caractere saut de ligne) dans le strtok merci de votre aide
je precise aussi que le dernie mot du fichie texte lui est comptabilise
#include <math.h> #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { int taille; int numligne; int nbrocc; int nbroccp; } mot; main() { int n; int d; int k; int s; int p; mot A; int i; i=0; j=0; s=0; k=0; char ch[100]; char sh[100]; printf("taper le nombre de ligne par page\n"); scanf("%d",&n); printf("taper le le mot que vous recherchez dans le fichie texte\n"); scanf("%s",&sh); FILE *f; A.nbrocc=0; A.nbroccp=0; f=fopen("testetp.txt","a+"); while (fgets(ch, 100, f) != NULL) { char *word=strtok(ch," ?!:.,\0 "); while(word!=NULL){ if(strcmp(sh,word)==0) {A.nbrocc++; } word=strtok(NULL," ?!:.,\0 "); }i++; k=A.nbrocc; k=k-s; s=A.nbrocc; printf("le mot %s apparait %d fois dans la ligne %d\n",sh,k,i); } A.taille=strlen(sh); printf("\nle nombre de ligne est = %d\n",i); printf("le nombre d'occurence du mot est = %d\n",A.nbrocc); printf("la taille du mot est = %d\n",A.taille); d=ceil((float )i/n); printf("le nombre de page est = %d\n",d); fclose(f); return 0; }
desole c mal ordone et y'a des declaration inutile
mon problemme est que le derinier mot de chaque ligne lorsqu'il n'est pas suivi par un blanc un point ou virgule..
n'est pas comptabilise dans le nombre d'occurence et pourtant j'ai mis \0(caractere saut de ligne) dans le strtok merci de votre aide
je precise aussi que le dernie mot du fichie texte lui est comptabilise
A voir également:
- Compter le nombre d'occurence langage c
- Google sheet compter le nombre d'occurence ✓ - Forum Excel
- Nombre de jours entre deux dates excel - Guide
- Langage binaire - Guide
- Nombre facile - Télécharger - Outils professionnels
- Excel compter le nombre de oui ✓ - Forum Excel
2 réponses
Salut akademia,
Ton code de compile pas.
Quand bien même il compilerait, on n'a pas de jeu de données pour le tester et observer le comportement que tu indiques.
Il ne peut pas fonctionner avec n'importe quel texte, car les lignes n'ont pas nécessairement une taille inférieure à 99 (il se peut donc que tu lises un mot à moitié), et tes caractères séparateurs ne sont pas exhaustifs par rapport à ceux pouvant être utilisés dans la langue française.
Mettre '\0' n'a pas de sens dans strtok, car c'est le caractère qui termine une chaîne.
Le caractère qui permet d'aller à la ligne est '\n'.
Dal
N.B. : ton code est également illisible car tu n'utilises pas les balises de <code c> permettant de préserver l'indentation de ton code, de colorer la syntaxe et numéroter tes lignes.
si tu n'as pas vu le bouton de l'éditeur te permettant de le faire, vois ce lien pour être guidé sur cette question, et à l'avenir poste ton code correctement stp
Ton code de compile pas.
Quand bien même il compilerait, on n'a pas de jeu de données pour le tester et observer le comportement que tu indiques.
Il ne peut pas fonctionner avec n'importe quel texte, car les lignes n'ont pas nécessairement une taille inférieure à 99 (il se peut donc que tu lises un mot à moitié), et tes caractères séparateurs ne sont pas exhaustifs par rapport à ceux pouvant être utilisés dans la langue française.
Mettre '\0' n'a pas de sens dans strtok, car c'est le caractère qui termine une chaîne.
Le caractère qui permet d'aller à la ligne est '\n'.
Dal
N.B. : ton code est également illisible car tu n'utilises pas les balises de <code c> permettant de préserver l'indentation de ton code, de colorer la syntaxe et numéroter tes lignes.
si tu n'as pas vu le bouton de l'éditeur te permettant de le faire, vois ce lien pour être guidé sur cette question, et à l'avenir poste ton code correctement stp