Séparer une chaine en sous chaine
Bonjour
Je me posais une question , j'aimerais diviser une chaine en sous chaine pour pouvoir ensuite les trier par longueur de chaine de caractere
Je m'explique : si je rentre "ceci est un essai" j'aimerais arriver a classer les mot par longueur mais je ne vois pas de solution a pars en separant la chaine en plusieurs chaine :s
Voila ce que j'ai deja fait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
void count();
char txt[1000];
int main()
{
printf("\n\nEntrer le texte de votre choix\n\n");
fgets(txt,999,stdin);
printf("\nVous avez rentre : %s\n\n",txt);
count();
return(0);
}
void count()
{
int taille=strlen(txt);
int caract=strlen(txt);
int nb=0,i=0;
for(i;i<taille;++i)
{
if((txt[i]== ' ') || (txt[i] == '\'') || (txt[i] == ',')){
nb++;
caract--;}
}
nb++; //car pas d'esapace en fin de ligne
printf("Il y a : %d mot",nb);
printf("\nIl y a %d caractere (sans espace)",caract-1);
} |
Pleassee help
PS:J'ai deja demander de l'aide sur un forum mais j'arrive toujours pas a comprendre :oops: :oops:
Re: [Debutant]Separer une chaine en sous chaine
Et ça veut dire quoi ce i tout seul ?
Ta méthode pour compter les mots est douteuse. On ne peut pas compter les séparateurs, car il peut y en avoir plusieurs à la suite, comme ' ' ou ', '
L'idée est de parcourir la chaine, ok, mais en gérant un état séquenciel 'mot / non-mot' en fonction des évènements que sont les caractères composant les mots (alphanumérique, '-') et les autres caractères. Ca se traduit par une machine à état simpliste (2 états), mais dont les transitions servent à actionner les compteurs comme il faut.
Re: [Debutant]Separer une chaine en sous chaine
Citation:
Envoyé par Emmanuel Delahaye
Et ça veut dire quoi ce i tout seul ?
Euh parceque j'ai declarer i avant :oops: et que je savais pas quoi mettre :D
Re: [Debutant]Separer une chaine en sous chaine
Citation:
Envoyé par firemax
Citation:
Envoyé par Emmanuel Delahaye
Et ça veut dire quoi ce i tout seul ?
Euh parceque j'ai declarer i avant :oops: et que je savais pas quoi mettre
Si il est déjà initialisé, tu mets rien
Code:
1 2 3 4
|
int i = 0;
for (; i < taille; ++i) |
mais ça a un coté bancal qui ne me plait pas trop...
Personellement, je fais ça:
Code:
1 2 3 4
|
int i;
for (i = 0; i < taille; ++i) |