KissyFroth
Messages postés38Date d'inscriptionmardi 16 août 2005StatutMembreDernière intervention 7 avril 2007 8 déc. 2005 à 23:57
Un tres grand merci à cette source : il y a parfois des petits détails sur lesquels on bute et qui vous empechent d'avancer : perso ca fai 1 heure que je cherche le caractere d'arret qui est donc '\0'. Maintenant je le saurais. Merci encore.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 24 janv. 2003 à 14:35
Salut,
pour myStrlen() le count ne sert à rien.
int myStrlen(const char *p)
{
char *c = p;
while(*c) c++;
return (c - p);
}
pour myStrcpy() tu peux faire idem.
Il faut toujours regarder la sortie ASM produite par le compilateur.
ciao...
glipper
Messages postés246Date d'inscriptiondimanche 2 juin 2002StatutMembreDernière intervention11 septembre 20161 24 janv. 2003 à 11:26
Reponse a Kikyo:
Ta methode marche... mais elle est + lentec (d'apres mes testes),
car faire une difference d'adresse (= de pointeur) prend enormement
de temps ... il faut diviser par le taille du type i.e. sizeof(char).
Peut-etre que ta methode est la meilleur pour un texte tres long...
cs_Azar
Messages postés9Date d'inscriptionlundi 20 mai 2002StatutMembreDernière intervention27 septembre 2003 23 janv. 2003 à 20:43
pour strcpy tu pourrais aussi faire :
void myStrcpy(char* str1, char* str2){
while(*str1++=*str2++);
}
glipper
Messages postés246Date d'inscriptiondimanche 2 juin 2002StatutMembreDernière intervention11 septembre 20161 23 janv. 2003 à 12:31
juste pour dire que le " est le caractère d'arret (\0)
Mais il est pas passé quand je l'ai ecrit.
glipper
Messages postés246Date d'inscriptiondimanche 2 juin 2002StatutMembreDernière intervention11 septembre 20161 23 janv. 2003 à 12:30
Je suis d'accord avec vous pour la fonction <myStrlen>,
mais pas pour la fonction <myStrcpy> car il faut copier le ' ' a
chaque fois.(j'aurais pu le faire en dehors de la boucle ...)
Et pour information je ne pense pas que un
dans un
soit tres mechant car parfois cela est tres utile ...
FloZix
Messages postés42Date d'inscriptiondimanche 3 mars 2002StatutMembreDernière intervention24 juin 2008 22 janv. 2003 à 22:41
c'est pas vraiment mechant de mettre un break mais c'est une maniere un peu violente de sortir de la boucle... quand on peu eviter c'est mieux. le break c'est surtout utilie dans un switch sinon ya souvent moyen d'eviter...
davwart
Messages postés855Date d'inscriptionmardi 19 novembre 2002StatutMembreDernière intervention28 juillet 20091 22 janv. 2003 à 16:09
Moi je suis largement de l"avis de FloZix, c'est à dire faire un
while(*pScr!=' ')
{
cs_Kikyo
Messages postés10Date d'inscriptionsamedi 28 octobre 2000StatutMembreDernière intervention25 juin 2003 22 janv. 2003 à 14:27
FloZix le "break" est dans le if(...) mais agit sur la boucle "do...while"... enfin je sais pas si c grave mais moi je vois pas où c méchant ^^
Sinon pour le myStrlen(...) ce cerait pas mieux de copier l'adresse du pointeur *p dans un autre pointeur *p2 au début de la fonction ainsi pour retourner le nombre de charatères il sefit de retourner (p - p2) ainsi celà évite d'incrémenter count... celà me parait plus optimiser non ?
FloZix
Messages postés42Date d'inscriptiondimanche 3 mars 2002StatutMembreDernière intervention24 juin 2008 22 janv. 2003 à 10:09
utiliser un break dans le if c'est bofff... c'était plus simple de mettre la condition dans le while et du coup eviter le break. Enfin il me semble.
8 déc. 2005 à 23:57
24 janv. 2003 à 14:35
pour myStrlen() le count ne sert à rien.
int myStrlen(const char *p)
{
char *c = p;
while(*c) c++;
return (c - p);
}
pour myStrcpy() tu peux faire idem.
Il faut toujours regarder la sortie ASM produite par le compilateur.
ciao...
24 janv. 2003 à 11:26
Ta methode marche... mais elle est + lentec (d'apres mes testes),
car faire une difference d'adresse (= de pointeur) prend enormement
de temps ... il faut diviser par le taille du type i.e. sizeof(char).
Peut-etre que ta methode est la meilleur pour un texte tres long...
23 janv. 2003 à 20:43
void myStrcpy(char* str1, char* str2){
while(*str1++=*str2++);
}
23 janv. 2003 à 12:31
Mais il est pas passé quand je l'ai ecrit.
23 janv. 2003 à 12:30
mais pas pour la fonction <myStrcpy> car il faut copier le ' ' a
chaque fois.(j'aurais pu le faire en dehors de la boucle ...)
Et pour information je ne pense pas que un
dans un
soit tres mechant car parfois cela est tres utile ...
22 janv. 2003 à 22:41
22 janv. 2003 à 16:09
while(*pScr!=' ')
{
22 janv. 2003 à 14:27
Sinon pour le myStrlen(...) ce cerait pas mieux de copier l'adresse du pointeur *p dans un autre pointeur *p2 au début de la fonction ainsi pour retourner le nombre de charatères il sefit de retourner (p - p2) ainsi celà évite d'incrémenter count... celà me parait plus optimiser non ?
22 janv. 2003 à 10:09