foufoudukb
Messages postés4Date d'inscriptiondimanche 13 mai 2007StatutMembreDernière intervention30 août 2009
-
13 mai 2007 à 20:07
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011
-
15 mai 2007 à 17:07
Bonjour à tous. Alors voila j'ai un poblème avec la bibliothèque String.
Alors le problème porte plus précisement sur la fonction strstr pour rechercher les similitudes.
Le but du code est de creer 3 chaines de caractères de 30 caracteres max(chaine1,chaine2,chaine3).
->chaine1 est deja initialisée
->chaine2 est donnée par l'utilisateur du programme ainsi que chaine3. (chaine2 doit contenir une phrase et chaine3 un caractere).
Je dois chercher dans la chaine2 le nombre de fois qu'apparait le caractère de la chaine3.
Par ailleurs je dois trouver le nombre de fois que la chaine2 est dans la chaine1. Mais je ne l'est pas encore fait.
//Declaration des variables
int longueur= 0,longueur2=0;
//Longueur des chaines 2 et 3
//int nbre_carac=0; //Nombre de caractère saisie(en chaine3) présent dans la chaine2
//Declaration des 3 chaînes de caractères
char *chaine1;
//chaine à initialisée
char *chaine2;
//chaine à saisir
char *chaine3;
//chaine vierge
char *caractere;
//Le caractere saisie
char *nbre_carac;
//Initialisation
chaine1=
"Salut";
//Saisie d'une chaîne de caractère
printf(
"Saisir une phrase\n");
chaine2=(
char *)malloc(30);
//On alloue un espace memoire de 30 en char
gets(chaine2);
//On saisie la chaine
printf(
"Chaine saisie:%s\n\n",chaine2);
//Saisie d'un caractère
printf(
"Taper un caractere\n");
//Copie dans la chaine3 de la chaine 1 et 2
chaine3=(
char *)malloc(30);
//allocation de mémoire
strcpy(chaine3,chaine2);
//On copie la chaine2 dans 3
strcat(chaine3,chaine1);
//On ajoute à la suite la chaine 1.
//Determination de la longueur de la nouvelle chaine
longueur2=strlen(chaine3);
//Résultats
printf(
"Chaine1:%s\nChaine2:%s\nChaine3:%s\nCaractere:%c\n\n",chaine1,chaine2,chaine3,caractere);
printf(
"Longueur de la chaine saisie(chaine2):%d\nNombre de presence du caractere saisie present dans la chaine saisie:%d\n",longueur,nbre_carac);
printf(
"Longueur de la nouvelle chaine(chaine3):%d",longueur2);
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 13 mai 2007 à 21:00
caractere ne doit pas être un pointeur mais un char tout simplement. Ensuite, rien de plus simple que de chercher combien de fois un caractère apparait dans une chaine:
char *c = chaine2;
while(*c) if(*c++ == caractere) ++nbre_carac;
Pour chercher le nombre de chaines présentes dans une autre chaine:
char *c = chaine1;int len strlen(chaine2), nbre_chaine 0;