Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Fonction qui trouve une chaine de caractere dans une autre ?
Modérateur : Jérémy
-
- Administrateur du site
- Messages : 2723
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Fonction qui trouve une chaine de caractere dans une autre ?
Bonjour à tous,
Sous mikroC connaissez vous l’existence d'une fonction qui cherche une chaine de caractère dans une autre chaine de caractère et qui renvoie par exemple "1" si le texte est trouvé ou "0" si le texte n'est pas trouvé.
Le but est d'enregistré dans un buffer par UART, les réponses d'un module ou le texte recu.
Ensuite je cherche du texte dans ce buffer par exemple le mot "OK" .
J'ai vu dans l'aide de mikroC les fonctions "strxxx" , mais aucune ne convient ou alors j'ai pas compris comment les utiliser .
Sous mikroC connaissez vous l’existence d'une fonction qui cherche une chaine de caractère dans une autre chaine de caractère et qui renvoie par exemple "1" si le texte est trouvé ou "0" si le texte n'est pas trouvé.
Le but est d'enregistré dans un buffer par UART, les réponses d'un module ou le texte recu.
Ensuite je cherche du texte dans ce buffer par exemple le mot "OK" .
J'ai vu dans l'aide de mikroC les fonctions "strxxx" , mais aucune ne convient ou alors j'ai pas compris comment les utiliser .
C'est en faisant des erreurs, que l'on apprend le mieux !!!
Fonction qui trouve une chaine de caractere dans une autre ?
Bonjour,
Essaye la fonction StrStr (voir string library), pour trouver la première occurrence de la chaine recherchée.
Si la fonction retourne une valeur <> 0 alors la chaine recherchée est incluse.
Pour MikroBasic il existe dans Libstock une énorme librairie StrngUtils_P18 contenant 136 fonctions pour la manipulation des chaines, regarde si il n'existe pas l'équivalent pou Mikroc
Essaye la fonction StrStr (voir string library), pour trouver la première occurrence de la chaine recherchée.
Si la fonction retourne une valeur <> 0 alors la chaine recherchée est incluse.
Code : Tout sélectionner
Function locates the first occurrence of the string s2 in the string s1 (excluding the terminating null character).
The function returns pointer to first occurrence of s2 in s1; if no string was found, function returns 0. If s2 is a null string, the function returns 0.
Example
char txt = "mikroElektronika";
char txt_sub = "mikro";
char *res;
res = strstr(txt,txt_sub);
Pour MikroBasic il existe dans Libstock une énorme librairie StrngUtils_P18 contenant 136 fonctions pour la manipulation des chaines, regarde si il n'existe pas l'équivalent pou Mikroc
Fonction qui trouve une chaine de caractere dans une autre ?
bonsoir Jeremy,
exemple:
pour recupere une commande via BlueTooth Android
cde d'une LED et valeur d'un curseur
avec
buffer1 = buffer reception UART1
unsigned char *p1;
exemple:
pour recupere une commande via BlueTooth Android
cde d'une LED et valeur d'un curseur
avec
buffer1 = buffer reception UART1
unsigned char *p1;
Code : Tout sélectionner
p1=strstr(buffer1,"CD1="); // etat commande #1 from BLE
if (p1>0)
{
if (*(p1+4)=='1')
{
// UART1_Write_CText("S1=0\r\n"); // retour d'ordre
Relay1=ON;
UART3_Write_CText(" Relay1_ON\r\n");
}
if (*(p1+4)=='0')
{
// UART1_Write_CText("S1=1\r\n");
Relay1=OFF;
UART3_Write_CText(" Relay1_OFF\r\n");
}
}
p1=strstr(buffer1,"SL=");
if (p1>0)
{ *(p1+6)=0;
// UART3_Write_Text(p1);
// UART3_Write(TAB);
// UART3_Write_Text(p1+3);
// UART3_Write(TAB);
Curseur=atoi(p1+3);
UART3_Write_CText("\r\n Curseur=");
IntToStr(Curseur,CRam1);
UART3_Write_Text(CRam1);
CRLF3();
}
Aide toi, le ciel ou FantasPic t'aidera
-
- Administrateur du site
- Messages : 2723
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Fonction qui trouve une chaine de caractere dans une autre ?
Merci à tout les deux,
@ PAul : j'ai vraiment du mal avec les pointeurs , du coup je comprends rien a ton bout de code
@PSPIC : A essayer , mais je ne comprends pas trop . SI il trouve la première occurrence de la chaine recherchée , mais toute la chaine ?
Ce serait donc un bon moyen si c'est le cas . SI la valeur est différente de 0 alors c'est que ma chaine est présente .
@ PAul : j'ai vraiment du mal avec les pointeurs , du coup je comprends rien a ton bout de code
@PSPIC : A essayer , mais je ne comprends pas trop . SI il trouve la première occurrence de la chaine recherchée , mais toute la chaine ?
Ce serait donc un bon moyen si c'est le cas . SI la valeur est différente de 0 alors c'est que ma chaine est présente .
C'est en faisant des erreurs, que l'on apprend le mieux !!!
- Claudius
- Passioné
- Messages : 260
- Enregistré en : septembre 2015
- Localisation : ELANCOURT (78 - YVELINES)
- Contact :
Fonction qui trouve une chaine de caractere dans une autre ?
Bonjour et Bonne Année 2018,
@Jérémy qui a écrit: j'ai vraiment du mal avec les pointeurs...
Comme ce n'est pas la 1st fois que je lis tes difficultés avec peut-être la chose la plus ardue à appréhender en Langage C, je te conseille de les mettre en oeuvre hors contexte des PICs (sous Windows et/ou Linux au sein de petits programmes) en suivant mot à mot des cours du genre Apprendre à programmer les pointeurs en C (*)
Pour ladite fonction, c'est effectivement strstr() ;-)
(*) Cette méthode permet d'aller 100 fois plus vite dans la compréhension d'un concept, reste après à l'utiliser dans l'environnement ad hoc...
Cordialement, A+
--
Claudius
@Jérémy qui a écrit: j'ai vraiment du mal avec les pointeurs...
Comme ce n'est pas la 1st fois que je lis tes difficultés avec peut-être la chose la plus ardue à appréhender en Langage C, je te conseille de les mettre en oeuvre hors contexte des PICs (sous Windows et/ou Linux au sein de petits programmes) en suivant mot à mot des cours du genre Apprendre à programmer les pointeurs en C (*)
Pour ladite fonction, c'est effectivement strstr() ;-)
(*) Cette méthode permet d'aller 100 fois plus vite dans la compréhension d'un concept, reste après à l'utiliser dans l'environnement ad hoc...
Cordialement, A+
--
Claudius
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
-
- Administrateur du site
- Messages : 2723
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Fonction qui trouve une chaine de caractere dans une autre ?
Bonsoir Claudius,
très sage ton conseil, que de m’éloigner de mon programme principal, pour essayer une fonction ou apprendre les pointeurs.... HORS PICS .
très sage ton conseil, que de m’éloigner de mon programme principal, pour essayer une fonction ou apprendre les pointeurs.... HORS PICS .
C'est en faisant des erreurs, que l'on apprend le mieux !!!
Fonction qui trouve une chaine de caractere dans une autre ?
Jérémy a écrit :@PSPIC : A essayer , mais je ne comprends pas trop . SI il trouve la première occurrence de la chaine recherchée , mais toute la chaine ?
Ce serait donc un bon moyen si c'est le cas . SI la valeur est différente de 0 alors c'est que ma chaine est présente .
Si la fonction retourne une valeur <> 0, c'est que la chaine recherchée a été trouvée.
Exemple:
Chaine à explorer: FANTASPICESTFANTASTIQUE soit C1
Chaine recherchée: PIC soit C2
F A N T A S P I C E S T F A N T A S T I Q U E
0 1 2 3 4 5 6 7 8 9 10 11 12
La fonction StrStr(C1,C2) retourne 6.
-
- Administrateur du site
- Messages : 2723
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Fonction qui trouve une chaine de caractere dans une autre ?
Merci pour cet exemple parlant ! ( phrase très bien choisie par ailleurs )
Mais si je comprends bien, il me semble que cela devrait être plutôt
F A N T A S P I C E S T F A N T A S T I Q U E
1 2 3 4 5 6 7 8 9 10 11 12
Car le "0" est réservé si la chaine recherchée n'est pas trouvé non ?
En tout cas si c'est ca , la méthode est trés celle qui me conviendrait
Mais si je comprends bien, il me semble que cela devrait être plutôt
F A N T A S P I C E S T F A N T A S T I Q U E
1 2 3 4 5 6 7 8 9 10 11 12
Car le "0" est réservé si la chaine recherchée n'est pas trouvé non ?
En tout cas si c'est ca , la méthode est trés celle qui me conviendrait
C'est en faisant des erreurs, que l'on apprend le mieux !!!
Fonction qui trouve une chaine de caractere dans une autre ?
bonjour à Tous,
EN C, une table (ou chaine de caractere) commence toujours à l'indice 0
donc on compte de 0 à 6
strstr( chaine 1, chaine2)
retourne un pointeur !, pas la valeur 6
ce pointeur pointe sur la 7 case ( indice 6 ) de la chaine inspectée
c'est plus facile d'utiliser un pointeur generique ..
il va falloir t'y mettre ..
ex;
Resultat:
EN C, une table (ou chaine de caractere) commence toujours à l'indice 0
donc on compte de 0 à 6
strstr( chaine 1, chaine2)
retourne un pointeur !, pas la valeur 6
ce pointeur pointe sur la 7 case ( indice 6 ) de la chaine inspectée
c'est plus facile d'utiliser un pointeur generique ..
il va falloir t'y mettre ..
ex;
Code : Tout sélectionner
char *p1;
char Chaine1[]="FANTASPIC"
char Chaine2[]="PIC"
....
p1=strstr(Chaine1,Chaine2);
UART1_Write_Text(Chaine1);CRLF1();
UART1_Write_Text(Chaine2); CRLF1();
UART1_Write(*(p1)); CRLF1();
UART1_Write(*(p1+1)); CRLF1();
UART1_Write(*(p1+2)); CRLF1();
UART1_Write(*(p1-1)); CRLF1();
UART1_Write(*(p1-2)); CRLF1();
while(1);
Resultat:
FANTASPIC
PIC
P
I
C
S
A
Aide toi, le ciel ou FantasPic t'aidera
-
- Administrateur du site
- Messages : 2723
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Fonction qui trouve une chaine de caractere dans une autre ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 73 invités