Cherche une mot dans une chaine de caractere

[Fermé]
Signaler
Messages postés
9
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
18 décembre 2012
-
Messages postés
25
Date d'inscription
dimanche 30 décembre 2012
Statut
Membre
Dernière intervention
20 juin 2013
-
Bonjour,

comment je cherche une mot dans une chaine de caractere et l'extraire
par exemple j'ai une chaine sous la format suivants
#code:nom:stock par exemple #100:kjhygjkyhg:300#233:jgvjhjv:400#


je doit verifier est ce que le code est trouvée dans cette chaine ou nn

code 100 est trouvée
code 200 n'est pas trouvée

A voir également:

4 réponses

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 300
Messages postés
9
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
18 décembre 2012

je ne comprend pas
Messages postés
9
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
18 décembre 2012

c marche pas donne moi un exemple clair
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 300
donne moi un exemple clair
Je ne suis pas à tes ordres !
en quoi ça ne marche pas ? donne nous un exemple de ce que tu as fais et qui ne marche pas avec les fonctions qui sont données dans le liens sus nommé, nous verrons ce qui ne va pas.
Messages postés
58
Date d'inscription
samedi 15 décembre 2012
Statut
Membre
Dernière intervention
10 novembre 2015

string s'est une bibliothèque pour géré les chaine de caractère! En gros, il te donne un tableau de caractère que tu n'as plus qu'a comparer avec ta chaine souhaitée.

avec %s tu rentres un chaine de caractères!
et strlen compte le nombre de caractères de ta chaine.

essai ça!

int main()
{
char chaine[100]={0};

scanf("%s",chaine);
printf("phrase: %s ! nombre de caractere %d", chaine,strlen(chaine));
}

ça devrait t'aider!

n'oublie pas #include<string.h>
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 768
evilfalcon,
string.h n'est pas une bibliothèque mais un header. C'est libc la bibliothèque qui gère les fonctions de chaînes de caractères.
Messages postés
9
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
18 décembre 2012

jje doit cherche que le code existe entre le # et le : c'est ca la probleme
Messages postés
25
Date d'inscription
dimanche 30 décembre 2012
Statut
Membre
Dernière intervention
20 juin 2013

char chaine[taille] = "#code:nom:stock";
char stocker[taille];
int i=1,j=0;
while(chaine[i] != ':')
{
stocker[j]=chaine[i];
j++;i++;
}

tu trouvera ton code dans la chaine stocker.
Bonne chance.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 768
aadilove,
Oui, et après, il faudra utiliser strcmp() pour savoir si la chaîne correspond à "code". Le plus simple est d'utiliser directement strstr().
Messages postés
25
Date d'inscription
dimanche 30 décembre 2012
Statut
Membre
Dernière intervention
20 juin 2013

La difficulté que malcolm007 a trouvé c'est comment extraire son code de la chaîne de caractère donnée.Maintenant puisque son code est là (sous forme d'une chaine de caractère) il peut soit utiliser la fonction strcmp(char *,char*) soit convertir la chaine de caractère contenant le code avec la fonction atoi(char *) et la comparer avec son code en entier.
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
81
On va mettre tout au clair ...

1) Les chaines de caracteres n'existent >>>PAS<<< en C !!!! Ce sont des tableaux de caractères !!

2) Il existe une fonction qui fait ça : char *strstr(const char *haystack, const char *needle); trouve la première occurrence de la chaîne needle dans la chaîne haystack
Messages postés
1270
Date d'inscription
dimanche 16 août 2009
Statut
Membre
Dernière intervention
30 décembre 2016
81
Bah si justement >< un tableau d'int marche comme ça, un tableau de double sera de la forme *(t+x*sizeof(double)) et ainsi de suite.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 768
Tu as vraiment besoin de revoir tes cours...
1/ Un tableau n'est pas un pointeur !!! Plutôt que chercher à te convaincre, lis ceci : http://www.siteduzero.com/tutoriel-3-344044-la-verite-sur-les-tableaux-et-pointeurs-en-c.html

2/ En plus, je t'ai pas repris dans ton post précédent, pensant que c'était une faute d'inattention, mais vu que tu la refais, je rectifie :
un tableau de double sera de la forme *(t+x*sizeof(double)) et ainsi de suite.

Non ! On fait *(t+x) tout simplement. Pas de sizeof dedans. Le compilateur connaissant le type de t, il saura de combien de bytes se déplacer en mémoire.
*(t+sizeof(int)) vaudra t[4] (en supposant que sizeof(int)=4) et non t[1]. En revanche *(t+1) vaut t[1]. Lis ceci : https://www.ltam.lu/cours-c/prg-c97.htm
Messages postés
25
Date d'inscription
dimanche 30 décembre 2012
Statut
Membre
Dernière intervention
20 juin 2013

Un Tableau n'est pas un pointeur.vu qu'un tableau en C est déclaré avec une taille fixe.au contraire d'un pointeur qu'on peut "ré-alloquer" (malloc()) atant de fois qu'on veut.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 768
aadilove,
Ce n'est pas le pointeur qu'on réalloue. La taille d'un pointeur restera la même.
C'est la zone mémoire qui sera réallouée. Le pointeur représente juste le premier élément de cette zone.
Pour réallouer c'est plutôt realloc() que malloc().
Messages postés
25
Date d'inscription
dimanche 30 décembre 2012
Statut
Membre
Dernière intervention
20 juin 2013

Tout a fait d'accord fiddy :)