Tom's Guide > Forum > Programmation > topic unique Drife ^^

topic unique Drife ^^

Forum Programmation : topic unique Drife ^^

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Page :    Page Précédente 1 2 3 4 5 6 Page Suivante Bas de page Chercher dans ce sujet
Mot :    Pseudo :           
 

Bonjours,
avant toutes chose un peu d'indulgnce ça fait a peine 2 semaine que je programme :D
j'en suis donc au chaine de caratère, un passage difficile :p
j'essait desespérément pour m'entrainer de reprogrammer les fonction sur chaine de caractere .
j'ai déja réussi a faire celle qui calcule la longueur de la chaine, celle
qui copie 2chaine, et celle qui concatène 2 chaine.
mais je n'arrive pas a faire celle qui compare 2chaine, et ça fait 3jour que je sèche j'en ait trop marre .
pouriez vous m'aider ?
ce programme est donc sensé dire si oui ou non les chaine sont identique, pour ça une fonction renvoie 1 pour identique, et 0 pour différent .
le problème c'est qu'elle renvoit toujours 1 :(
voila le code :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. long fonctionComparaison(char *chaine1,char *chaine2);
  5. int main()
  6. { char chaine1[30]="texte de test", chaine2[30]="texte de test";
  7. long nombreDeReference=0;
  8. fonctionComparaison(chaine1, chaine2);
  9. if (nombreDeReference==1)
  10. {
  11.     printf("les chaines sont identiques" );
  12. }
  13. else if (nombreDeReference==0)
  14. {
  15.     printf("les chaines sont differentes" );
  16. }
  17. printf("c'est la chaine1 %s", chaine1);
  18. printf("c'est la chaine2 %s", chaine2);
  19. printf("c'est le nombre de reference %ld", nombreDeReference);
  20. system("PAUSE" );
  21.     return 0;
  22. }
  23. long fonctionComparaison(char *chaine1,char *chaine2)
  24. {
  25.     long nombreDeReference=0;
  26.     long i;
  27. for (i=0;chaine1[i]!='\0';i++)
  28.     {
  29.       if (chaine1[i]==chaine2[i])
  30.           {
  31.                 nombreDeReference=1;
  32.           return nombreDeReference;
  33.           }
  34.       else
  35.         {
  36.                 nombreDeReference=0;
  37.         return nombreDeReference;
  38.         }
  39.     }
  40. }


je sais qu'il est foireux , mais je n'arrive pas a comprendre pourquoi.
merci de m'écliarer ;)


Message édité par Drife le 17-11-2006 à 17:13:22
------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Salut ,
tu dois savoir qu'une chaine de carastère se termine par un '\0', donc a mon avis l'erreur est à cette ligne :
for (i=0;chaine1[i]!='';i++)
remplace la par : for (i=0;chaine1[i]!='\0';i++)
voila corrige déjà ça.

Répondre à Anonyme

a oui tient le '\0' n'est pas passé sur le document word (car j'ai exporté le code au document word).
mais il est bien présent ....
le problème est ailleur mais ou ????

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

Moi je remplacerais cette ligne :
for (i=0;chaine1[i]!='\0';i++)

par :

while(chaine1[i]!='\0' && chaine2[i]!='\0' )
et incrementer le i dans la boucle, car tu ne sais pas quel chaine est la plus longue.
apres le while, tu met un return 0;


Message édité par Anonyme le 14-10-2006 à 12:46:20
Répondre à Anonyme

c'est vrai c'est juste
merci ;)

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

Bon je me suis embrouillé, voila un programme juste :

# long fonctionComparaison(char *chaine1,char *chaine2)
# {
# long i=0;
#
# while(chaine1[i]!='\0')
# {
# if chaine1[i]!= chaine2[i] return 0;
# i++;
# }
# if chaine2[i]=='\0' return 1;
# else return 0;
# }

Répondre à Anonyme

ben non ça marche pas :(
voici le code

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. long fonctionComparaison(char *chaine1,char *chaine2);
  5. int main()
  6. { char chaine1[]="texte de test", chaine2[]="texte de test";
  7. long nombreDeReference=0;
  8. fonctionComparaison(chaine1, chaine2);
  9. if (nombreDeReference==1)
  10. {
  11.     printf("les chaines sont identiques" );
  12. }
  13. else if (nombreDeReference==0)
  14. {
  15.     printf("les chaines sont differentes" );
  16. }
  17. printf("c'est la chaine1 %s", chaine1);
  18. printf("c'est la chaine2 %s", chaine2);
  19. printf("c'est le nombre de reference %ld", nombreDeReference);
  20. system("PAUSE" );
  21.     return 0;
  22. }
  23. long fonctionComparaison(char *chaine1,char *chaine2)
  24. {
  25.     long nombreDeReference=0;
  26.     long i=0;
  27. while (chaine1[i]!='\0')
  28. {
  29.     if (chaine1[i]!=chaine2[i])
  30.     return 0;
  31.     i++;
  32. }
  33. if (chaine2[i]=='\0')
  34. return 1;
  35. else return 0;
  36. }


la j'en suis plus au stade de demander mes erreurs, je voudrais qu'onme dise le code qui marche.
je l'étudierai et j'en apprendrais plus qu'en ramant comme un con .


Message édité par Drife le 14-10-2006 à 20:44:31
------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

J'ai pas testé ton code, mais si tu remplaçais ça:

Code :
  1. long nombreDeReference=0;
  2. fonctionComparaison(chaine1, chaine2);



par:

Code :
  1. long nombreDeReference=0;
  2. nombreDeReference = fonctionComparaison(chaine1, chaine2);



ça marcherait déjà mieux ;)

Répondre à CRicky

sui je bete putain.
la tu as mis le doigt sur quelquechose que je sentais foireux sans savoir pourquoi ^^
merci ;)
je reposte si j'y arrive pas

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

et voila ;)
ça y est cette putain de fonction marche enfin :D
par contre bien entendu je n'arrive absolument pas a coder celle qui cherche un caractère :pfff:
je me demande si c'est bien utile de recoder toutes ces fonction mais il parait que c'est un bon entrainement^^
vous en pensez quoi ?
sinon vous auriez une piste pour reproduire cette foutue fonction qui recherche un caractere ?
merci ;)

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

Oui ca peut être utile, enfin ca dépend de ton niveau.
precise ce que dois faire ta fonction recherche caractère ...

Répondre à Anonyme

mon niveau : au cas ou vous l'auriez pas remarqué : nul ^^
je maitrise les variable et opération sur les variable , les tableau , les condition, a peu près les pointeurs.
et puis j'essaye de bien maitriser les chaine de caractere.
mon but dans la vie ?
maitriser corectement le C pour ensuite apprendre a faire du SDL ,et peu etre un jour de l'openGL :love:
je suis très motivé j'adore programmer sauf quand je reste bloqué très longtemps sur la meme chose.

en fait je voudrais faire une fonction qui dans une chaine de caractere recherche un caractere et indique si il est présent ou non en renvoyant 1 ou zero.

ensuite si je réussi a faire ça je ferai une fonction qui grace a un pointeur sur un caractere enverrais la fin de la chaine , comme je sais plus quelle fonction déja écrite de string.h

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

De l'openGL, bof pas besoin d'être de maitriser a fond le C pour en faire.

Pour ta première fonction, tu parcours ta chaine de caractere comme un tableau et tu teste l'egalité avec ton caractère, dès que tu le trouve, hop un return 1, et quand tu sors de la boucle, tu fais un return 0, voila.

Répondre à Anonyme

pour la première oui c'est assez facile j'y arrive.
par contre la 2ème c'est la ou ça coinçe...
puis quake3 a été fait avec du C et de l'openGL donc je veut en faire ^^

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

ques que tu veux dire par "fin de chaine" exactement

Répondre à Anonyme

par fin de chaine j'entend ceci :
imagine une chaine boite a musique (je dis nimp :lol: ).
ma fonction , je lui envoit (chaine, 'm')
elle me renvoit "musique", soit la fin de la chaine a partir de m.

mais bon ça c'est pour plus tard lol,car pour l'instant je suis occupé avec une fonction qui se contente de dire si oui ou non le caractere demandé est prsésent dans la cahine, et il y a un défault que je n'arrive pas a éliminer.

bon tout d'abord,cette fonction marcahit très bien, tant que je définnissait d'avance le caractere rechercher.

j'ai donc voulu faire mieu, en proposant a l'utilisateur de choisir le caractere a rechercher.

j'ai donc écrit cette fonction :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. char search(char *chaine,char caractereARechercher);
  5. int main()
  6. { char chaine[]="boite",caractereARechercher={0},nbref=0;
  7. printf("entrez une lettre,l'ordinateur va la chercher dans le mot boite,et vous dire si il l'a trouvee" );
  8. scanf("%c", &caractereARechercher);
  9. nbref=search(chaine, caractereARechercher);
  10.     if (nbref==1)
  11.     printf("%c est present dans chaine", caractereARechercher);
  12.     else
  13.     printf("%c n'est pas dans chaine", caractereARechercher);
  14.         system("PAUSE" );
  15.         return 0;
  16. }
  17. char search(char *chaine,char caractereARechercher)
  18. {long i;
  19.     for(i=0;chaine[i]!=caractereARechercher;i++);
  20.     {
  21.     if (chaine[i]==caractereARechercher)
  22.     return 1;
  23.     else
  24.     return 0;
  25.     }
  26. }



lorsque que le caractere est présent, elle marche très bien :wahoo:
par contre lorsque le caractere n'est pas présent, on me dit "ce programme va etre arreter parce que ...." .
je n'arrive pas a comprendre pourquoi ça marche lorsque le caractere est dans la cahine, et que ça marche pas quand il ne l'est pas :( .
merci de m'aider encore :)

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

Re !
quand il a finit de parcourir la chaine et quil la pas trouvé, il retourne 0.
Toi tu testais seulement le 1er caractere de la chaine.


# long search(char *chaine,char caractereARechercher)
# {long i;
# for(i=0;chaine[i]!=caractereARechercher;i++);
# {
# if (chaine[i]==caractereARechercher)
# return 1;
# }
# return 0;
# }



[edit] search renvoi un long, pas un char, donc dans le main, declare nbref comme un long (un int suffirait)


Message édité par Anonyme le 15-10-2006 à 17:11:06
Répondre à Anonyme

merci de m'aider,mais ça ne marche toujours pas.
j'ai fait ce que tu m'as dit (bien que je ne comprend pas pourquoi ma fonction renverrai un long...).
le résultat ?
2 problèmes : lorsque je tape "l" par exemple, la fonction renvoit 1 alors qu'il n'y a pas de "l" dans le mot boite.
2ème problème, avec certaine lettres,comme "z", le programme me dit carément que j'ai fait quelquechose de non conforme !!!!
je ne comprend pas !!!
voiçi le code, écoute dis moi tout ce qui va pas moi j'y comprend plus rien.
quoi qu'il en soit voila le code,et merci de m'aider encore ...

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. char search(char *chaine,char caractereARechercher);
  5. int main()
  6. { char chaine[]="boite",caractereARechercher={0};
  7. long nbref=0;
  8. printf("entrez une lettre,l'ordinateur va la chercher dans le mot boite,et vous dire si il l'a trouvee" );
  9. scanf("%c", &caractereARechercher);
  10. nbref=search(chaine, caractereARechercher);
  11.     printf("%ld", nbref);
  12.     if (nbref==1)
  13.     printf("%c est present dans chaine", caractereARechercher);
  14.     else
  15.     printf("%c n'est pas dans chaine", caractereARechercher);
  16.         system("PAUSE" );
  17.         return 0;
  18. }
  19. char search(char *chaine,char caractereARechercher)
  20. {long i;
  21.     for(i=0;chaine[i]!=caractereARechercher;i++);
  22.     {
  23.     if (chaine[i]==caractereARechercher)
  24.     return 1;
  25.     }
  26.   return 0;
  27. }



plus généralment je ne comprend pas.
ça fait 3 semaine maintenant que j'apprend le C, et je n'ai jamais bloqué plus d'une soirée sur quelquechose,ce qui fait que le plaisir etait sans cesse renouvelé.
la par contre, je galère et je suis meme obligé de faire appel a un forum,chose que je n'avais jamais faite avant. galérer comme ça ne me procure aucun plaisir, ça me gonfle qu'aucuns de mes programmes ne marche :(
est ce que c'est normal d'avoir autant de difficultées ???
toi tu m'air l'air vachement balaise :D
a l'époque ou tu avais mon niveau (oula c'était loin ^^) tu as eu du mal avec les chaines de caractere ?

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

Re !
alalala toujours bloqué ^^
tu demandes pourquoi search doit renvoyer un long, en fait deja un int suffirait.
search doit renvoyer si oui ou non, un caractere est present dans la chaine, autrement dis, elle doit renvoyé un booleeen.
Comme tu as pu le voir, les booleens n'existe pas en C, on utilise generalment 1 pour vrai, et 0 pour false.
Voila pourquoi search renvoie 0 ou 1.
1er erreur que je vois dans le code :

char search(char *chaine,char caractereARechercher);

remplace char par long !

Et pour repondre a ta question, l'epoque ou j'avais ton niveau c'etait seulement ya 3 ans, au debut il faut bien apprendre les bases et puis ca passe.


Je vais tester le code sur ma machine et j'editerais.

Répondre à Anonyme

Hello,

1. Déjà, je vois un truc super énorme.
dans la fonction search :
la boucle s'arrête dès qu'elle tombe sur "caractereARechercher".
S'il n'est pas présent ??
Et ben ça segfault (tu pètes la mémoire).

2. ta fonction search test seulement si le caratere est présent. Elle devrait plutot s'appeler : isPresent. renvoit 1 si présent, 0 sinon.

3. la bonne condition d'arrêt de ta boucle serait plutôt : fin de chaîne, qui se traduit par le caractère '\0' (backslash zéro).

pour moi, ca devrait donner un truc du genre :

Code :
  1. for (i = 0; chaine[i] != '\0'; i++)
  2.   if (chaine[i] == caractereARechercher)
  3.     return 1;
  4. return 0;

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Anonyme a écrit :

Re !
alalala toujours bloqué ^^
tu demandes pourquoi search doit renvoyer un long, en fait deja un int suffirait.
search doit renvoyer si oui ou non, un caractere est present dans la chaine, autrement dis, elle doit renvoyé un booleeen.
Comme tu as pu le voir, les booleens n'existe pas en C, on utilise generalment 1 pour vrai, et 0 pour false.
Voila pourquoi search renvoie 0 ou 1.
1er erreur que je vois dans le code :

char search(char *chaine,char caractereARechercher);

remplace char par long !

Et pour repondre a ta question, l'epoque ou j'avais ton niveau c'etait seulement ya 3 ans, au debut il faut bien apprendre les bases et puis ca passe.


Je vais tester le code sur ma machine et j'editerais.



Heu, un char ça suffit.
A la rigueur un int. mais un long, pour stocker 0 ou 1, c'est un peu mettre une mouche dans un 600m².

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Voila celui la marche

Code :
  1. #include <stdio.h>
  2.   #include <stdlib.h>
  3.   #include <string.h>
  4.  
  5.  
  6.   int search(char *chaine,char caractereARechercher);
  7.  
  8.     int main()
  9.   {
  10.   char chaine[]="boite";
  11.   char caractereARechercher;
  12.   int nbref=0;
  13.  
  14.     printf("entrez une lettre,l'ordinateur va la chercher dans le mot boite,et vous dire si il l'a trouvee : \n" );
  15.     scanf("%c", &caractereARechercher);
  16.     nbref=search(chaine, caractereARechercher);
  17.     printf("\t %d ", nbref);
  18.     if (nbref==1) printf("%c est present dans chaine\n", caractereARechercher);
  19.     else printf("%c n'est pas dans chaine\n", caractereARechercher);
  20.   return 0;
  21.   }
  22.  
  23.   int search(char *chaine,char caractereARechercher)
  24.   {
  25.     int i;
  26.     for(i=0;chaine[i]!='\0';i++)
  27.     {
  28.       if (chaine[i]==caractereARechercher)   
  29.       return 1;
  30.     }
  31.     return 0;
  32.   }



Il y avait plusieurs erreurs,
for(i=0;chaine[i]!=caractereARechercher;i++);
2 erreurs,
chaine[i]!=caractereARechercher -->\0, ok ca c'est ma faute
l'autre c'est le ;.

Pense a mettre des \n c'est plus jolie a l'affichage, et mettre des commentaires, ca t'aide a comprendre ce que tu fais.


@vinz42 mettre 1 ou 0 dans un int, c'est plus naturel pour commencer.

Message cité 1 fois
Message édité par Anonyme le 17-10-2006 à 11:56:48
Répondre à Anonyme

Anonyme a écrit :

@vinz42 mettre 1 ou 0 dans un int, c'est plus naturel pour commencer.


Son but, c'est d'apprendre le C pour faire du SDL et de l'OpenGL.

S'il obstrue le coté optimisation dès le début, ça va prendre du temps.
Et c'est juste une bonne pratique.

pour info :
taille en mémoire :
char < int < long
pour connaitre les vrais tailles des types :
printf(sizeof(char));

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Citation :

char < int < long


Pas d'accord :p
"char" est sur 1 octet
"short" est sur 2 octets
"long" est sur 4 octets
le type "int" est dépendant de l'architecture.
le reste n'est pas normé.

Sur les PC actuels, "int" est sur 4 octets, donc pour les PC, "int" == "long" ;)

Répondre à CRicky

pwned!

ok cricky...
mais j'ai pas précisé l'archi ! NA!
si tu prend une Alpha, ou une sun...
ok... t'as raison.
c'est pour ça que j'avais mis sizeof... j'avais plus les tailles en tête.

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

lol, je cherche la petite bête dans le 600m² :D
Ouais, sinon, j'ai dis pas d'accord, mais en fait je le suis (c'est aussi comme ça que je le vois).

Répondre à CRicky

ok merci les gars de votre aide et de vos réponses ça fait plaisir :wahoo:
par contrre au niveau char, int, long je vais rester simple si vous permettez . pour moi,
char=[-127,+128]< int [ -2 147 483 648,2 147 483 648]= long < float < double .
on peut également assigné plus de valeurs en mettant unsigned devant, ce qui double le nombre de valeur positive mais empèche de mettre des négative.
z'avez vu les gars je connais ma leçon :p
nan fin voila j'en reste la moi si vous voulez bien :D
je revient vous embeter si je rebloque sérieusement (bien entendu ce sera sur une autre fonction, celle la je pense que je ne peut plus me planter :sarcastic: )

merci encore ;)

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

Citation :

on peut également assigné plus de valeurs en mettant unsigned devant


Non, il y en a autant, c'est juste que ce ne sont pas les mêmes, pour la raison que tu as donnée :p

Citation :

char=[-127,+128]< int [ -2 147 483 648,2 147 483 648]= long < float < double


En pratique, ça n'a pas d'intérêt de comparer des entiers et des flottants pour la taille (puisque ceux-ci ont des codages particuliers), mais c'est exact.

Désolé, j'ai toujours pas trouvé la mouche. :D


Message édité par CRicky le 17-10-2006 à 13:30:17
Répondre à CRicky

re
désolé je revient vous embeter, avec la meme fonction en plus ^^
ça ne marche toujours pas, pourtant j'ai fait exactement ce que tu m'as dit.

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int search(char *chaine,char caractereARechercher);
  5. int main()
  6. { char chaine[12]="boite",caractereARechercher;
  7. int nbref=0;
  8. printf("entrez une lettre,l'ordinateur va la chercher dans le mot boite,et vous dire si il l'a trouvee" );
  9. scanf("%c", &caractereARechercher);
  10. nbref=search(chaine, caractereARechercher);
  11.     printf("%ld", nbref);
  12.     if (nbref==1)
  13.     printf("%c est present dans chaine", caractereARechercher);
  14.     else
  15.     printf("%c n'est pas dans chaine", caractereARechercher);
  16.         system("PAUSE" );
  17.         return 0;
  18. }
  19. int search(char *chaine,char caractereARechercher)
  20. {long i;
  21.     for(i=0;chaine[i]!='0';i++);
  22.     {
  23.     if (chaine[i]==caractereARechercher)
  24.     return 1;
  25.     }
  26.   return 0;
  27. }


la fonction renvoit que des 0, meme si le caractere en question est bien compris dans boite.
je crois avoir compris pourquoi, c'est une première victoire ^^
en fait, imaginons que je prend "o" . ma boucle se lance:
chaine[0]=b!=(caractereARechercher qui = o)
chaine[1]=o=caractereARechercher
le problème,c'est que la boucle continu ensuite !!!
chaine[2]=i!=caractereARechercher
et etc, resultat a la fin de la boucle, la condition n'est pas remplie, et la fonction renvoit zero ce qui est logique.
cela, je l'avais compris avant de m'embrouiller .
c'est la raison pour laquelle j'avais mis for (i=0;chaine[i]!=caractereARechercher;i++); .
le problème, comme l'a signalé un sympathique IDnaute, c'est que tant que le caractere a rechercher est présent ça marche youpi !
par contre quand il n'est plus présent ben l'OS coupe le programme parce cela fait une manip non conforme.
maintenant que j'ai compris le problème, je ne suis pas plus avancé ^^
parce que je ne vois pas comment arreter la boucle au bon moment,sans qu'elle plante si elle a une instruction fausse.
vous auriez une idée ?
merci encore


Message édité par Drife le 18-10-2006 à 13:57:18
------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

nan, si le caractère est présent, il passe sur return, qui a pour effet de sortir de la fonction en renvoyant normalement.
J'essaie de tester ce qui merde.

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

ok merci ;)

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

boulet !!!
chercher les 2 erreurs :
for(i=0;chaine[i]!='0';i++);

Spoiler :


erreur 1 : point virgule à la fin du for !!!!
erreur 2 : \0 et pas 0


Message édité par Vinz42 le 18-10-2006 à 14:14:46
------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

exuse mais le "\" ne passe pas quand je fais copier coller, mais je t'assure qu'il y est dans le prog normal

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

ok pour le \0.
et la, ça marche ?
enfin, chez moi, ca marche en tout cas...

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

ben non :heink:

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

ok, je reprend 2 lexomil avec mes 3 atarax, on respire et on recommence :


Code :
  1. int search(char *chaine,char caractereARechercher)
  2. {
  3.     long i;
  4.     for(i=0;chaine[i]!='\0';i++) // ICI pas de ; sinon, il ne rentre JAMAIS dans le corps de ton for
  5.     {
  6.     if (chaine[i]==caractereARechercher)
  7.     return 1;
  8.     }
  9.     return 0;
  10. }


Message édité par Vinz42 le 18-10-2006 à 14:27:49
------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Re
bizarre, le tout drrnier code que je t'ai donné marche très bien chez moi, reprend le.

Répondre à Anonyme

regarde bien le dernier le dernier code que j'ai posté ...
ta vu l'erreur ?
la boucle for ....
et oui, un point virgule de trop !!!!!!
voila ça marche maintenant les gars merci ;)
je revient poster dès que j'ai transféré ma fonction sur clé (car je programme sur un autre PC) .
j'ai tenté une fonction de fous et ben sur ça marche pas ^^


Message édité par Drife le 21-10-2006 à 10:19:23
------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

faudrait lire mes posts dès fois...

Citation :


for(i=0;chaine[i]!='\0';i++) // ICI pas de ; sinon, il ne rentre JAMAIS dans le corps de ton for

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

justement
c'est en lisant ton post que je me suis rendu compte de mon erreur ( faudra que remette de l'encre verte pour le truc important et évidant LOL) .

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

"l'encre verte", c'est les commentaires dans le code...

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

lol nan en fait ce qui a fait que que j'ai pas tout de suite pigé, c'est que je pensais que tu disait boulet pour le "\" manquant .
et tu m'as dit que ce code marchait,alors que dans l'exemple il y avait un ; après le for .
donc moi j'ai pensait que c'était bon ^^
mais bon mnt j'ai compris c'est bon.
merci vinz ;)

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

you're welcome.

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Moi aussi je te l'avais dit :

" 2 erreurs,
chaine[i]!=caractereARechercher -->\0, ok ca c'est ma faute
l'autre c'est le ;. "

Répondre à Anonyme

ok merci vinz ET Cart .
de toute façon je vais vous ramenez du gros dossier croyez moi il y aura de quoi vous départager ...


Message édité par Drife le 21-10-2006 à 11:38:20
------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

voila du gros dossier ^^

j'essait donc actuellement de faire une fonction qui copie la strchr string.h, que vous connaissez surement.
mais voila, comme d'hab,ça marche pas.
notez que je m'y serez attendu, mais la j'avoue que je sais plus trop par ou prendre le problème...
vous pouvez jetez un coup d'oeil au code ?

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. char search(char *chaine, char caractereARechercher);
  4. int main()
  5. {
  6.     char chaine[]="texte de test", *suiteChaine="NULL",caractereARechercher='d';
  7.     suiteChaine=search(chaine, caractereARechercher);
  8.     printf("%s", suiteChaine);
  9.     if (suiteChaine!="NULL" )
  10.     {
  11.         printf("voici la fin de la chaine a partir du 1er d: %s\n", suiteChaine);
  12.     }
  13.     system("PAUSE" );
  14.     return 0;
  15. }
  16. char search(char *chaine,char caractereARechercher)
  17. {
  18.     char *suiteChaine="NULL";
  19.     "suiteChaine"=&chaine[7];// on détermine l'adresse du caractere que l'on recherche
  20.     return suiteChaine;
  21. }


le but du programme est simple.
on envoit a une fonction une chaine et un caractere.
cette fonction,a l'aide d'un pointeur va renvoyez l'adresse du caractere que l'on reçoit.
grace a cette adresse,on affiche la fin de la chaine...
je vous remerçie d'avance :)
je suis au courant de la pauvretée de ce code,soyez une fois de plus indulgent ^^

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

T'es pas en train de faire faire un exercice aux autres ? :D
J'ai repéré 5 fautes, j'ai bon ? :D


Message édité par CRicky le 21-10-2006 à 12:32:13
Répondre à CRicky

oui, mais alors ce serait sympas de me dire ou :lol: .
et plus généralement me dire grossièrement le système que je dois mettre au point,car je crois que la ou niveau de l'idée du programme je me demande si meme si le programme avait plus d'erreur si il marcherait ^^

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife

Re,
- déjà search renvoie un pointeur et pas un char
- pourquoi tu mets "suiteChaine" ? suiteChaine est une variable.
-j'ai corrigé quelques petites fautes encore

Code :
  1. #include <stdio.h>
  2.     #include <stdlib.h>
  3.  
  4.     char* search(char *chaine, char caractereARechercher);
  5.  
  6.  
  7.   int main()
  8.   {
  9.       char chaine[]="texte de test", *suiteChaine="NULL",caractereARechercher='d';
  10.  
  11.       suiteChaine=search(chaine, caractereARechercher);
  12.       if (suiteChaine!="NULL" )
  13.  
  14.       {
  15.           printf("voici la fin de la chaine a partir du 1er d: %s\n", suiteChaine);
  16.       }
  17.       return 0;
  18.   }
  19.  
  20.  
  21.   char* search(char *chaine,char caractereARechercher)
  22.   {
  23.       char *suiteChaine="NULL";
  24.       suiteChaine=chaine+6;// on détermine l'adresse du caractere que l'on recherche
  25.       return suiteChaine;
  26.   }



[edit] rajoute le system("PAUSE" );


Message édité par Anonyme le 21-10-2006 à 15:25:55
Répondre à Anonyme

impossibel de te poser une colle décidément ^^
je vais tenter ça merci :)

------------------------------ si dieu existe et a inventé la bite, alors il a inventé la masturbation qui va avec. Qu'il ne vienne donc pas se plaindre...
Pour overclocker :
http://www.infos-du-net.com/forum/ [...] pic-unique
Répondre à Drife
Page Précédente
1 2 3 4 5 6
Tom's Guide > Forum > Programmation > topic unique Drife ^^
Aller à :

Il y a 976 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens