Compter les mot d'un fichier text en C - C++ - Programmation
Marsh Posté le 29-04-2003 à 20:22:42
cherche du coté de strtok, ca permet de décomposer une chaine de caractères en fonction d'une liste de délimiteurs que tu lui passe.
attention, strtok modifie la chaine qu'on lui passe.
exemple de code là :
http://www.cplusplus.com/ref/cstring/strtok.html (1er lien recherche google)
Comme délimiteurs, tu mets tout ce qui peut séparer des mots (espace, tab, virgule ...)
au lieu d'imprimer les éléments, tu comptes leur nombre et hop !
[edit]fautes de farpe
Marsh Posté le 29-04-2003 à 20:26:05
carrément pas.
tu lis caractere par caractere si c'est un espace tu es hors d'un mot, quand tu passe d'un espace à autre chose, c'est un mot
Marsh Posté le 29-04-2003 à 20:32:03
++Taz a écrit : carrément pas. |
c'est le principe que j'ai appliqué mais aparement j'ai couillant quand je l'ai passé en C paske ça merde
Marsh Posté le 29-04-2003 à 20:36:42
il te manque combien de mots par rapport à ce que tu attends ?
un par ligne ?
Marsh Posté le 29-04-2003 à 20:45:44
SquiZz a écrit : il te manque combien de mots par rapport à ce que tu attends ? |
nop j'ai pensé a compter le dernier mot
c'est aléatoire défois 3 défois 50
proposé vos algo
Marsh Posté le 29-04-2003 à 21:05:38
EpoK a écrit : |
tu peux aussi poster ton code et un exemple de fichier a traiter en donnant ce que tu attends et ce que tu obtiens.
Sinon, en utilisant strtok
Code :
|
ca compte les retour chariot comme dans le nombre de caractères
Marsh Posté le 29-04-2003 à 21:15:52
Une petite solution qui vaut ce qu'elle vaut :
Code :
|
Marsh Posté le 29-04-2003 à 21:19:05
mauvaise mais tres bien pour le principe du bouleen dans_un_mot
le feof marche pas, fais une recherche sur le forum
Marsh Posté le 29-04-2003 à 21:21:46
ah, flute alors, j'ai sorti ca comme ca sans tester Désolé.
Marsh Posté le 29-04-2003 à 21:31:37
|
Ca à pourtant l'air de fonctionner S'agirait t'il d'une couille à la fflush(stdin) ?
Code :
|
Merci pour l'éclaircissement !
@+
Marsh Posté le 29-04-2003 à 21:35:21
vire le fclose(stdin);
et fais
while((c=fgetc(fichier)) != EOF)
Marsh Posté le 29-04-2003 à 21:39:30
Correction faite, etourderie. Je réfléchissais à ta remarque c'est pour ca
Mais je n'ai toujours pas saisi pour quoi on ne devait pas le faire ? Il s'agit d'un résultat indeterminé ?
Marsh Posté le 29-04-2003 à 21:45:38
Evadream -jbd- a écrit : [fixed]
|
ca te dirait pas de tester si l'ouverture du fichier a réussi ?
[edit] et le nombre d'arguments lors de l'appel à ton programme ?
Marsh Posté le 29-04-2003 à 21:46:08
++Taz > En effet, merci pour ce topo !
@+
Marsh Posté le 29-04-2003 à 21:47:52
SquiZz a écrit : |
J'ai tapé ca en 30 secondes montre en main ( fclose(stdin)... ), mon but était pas de faire un truc rock stable et de le distribuer à la terre entière pour remplacer wc, mais juste de tester mon raisonnement, sans autre prétention
Marsh Posté le 29-04-2003 à 21:53:12
Epok > tu ne voudrais pas donner ton code, juste pour voir ce qui ne va pas dans ton algo, parce que finalement c'est ca le plus intéressant !
Marsh Posté le 29-04-2003 à 20:15:45
Et oui ca parait tout bete et ca l'est mais bon j'ai du mal
le principe était de refaire ce que fait la commande wc
les lignes et les car sans pb mais pour compter les mots il m'en manquait toujours
qu'elle est la meilleur solution ?
mici
Message édité par EpoK le 29-04-2003 à 20:15:59