CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

copier une chaine

captainpatate
captainpatate
Niveau 7
31 août 2007 à 23:39:17

merci dnob700 j´ai trouvé que mon erreur est du enfaite a l´utilisation de OU a la place de ET et pour ta remarque au sujet de mes conaissances sur le pointeurs je voudrais te dire que je vien tout juste de commencer le C il y´a 3 semaine.
ps:pk t´as dit que c´etait pas beau??

keepsmile j´etudie encore ton code.
mais j´ai encore un probleme :lol: quand j´exucute le programme il m´affiche: alut< "
voici le code :

  1. include <stdio.h>
  2. include <stdlib.h>

void recherchecaractere(char mot[],char lettre,char suite[]);

int main(int argc, char *argv[])
{
char mot[]="salut",*suite,lettre=´a´;

suite = recherchecaractere(mot,lettre);

system("PAUSE");
return 0;
}

void recherchecaractere(char mot[],char lettre,char suite[])
{
long i,a;

for (i=0;mot[i]!=lettre && mot[i]!=´\0´;i++) //!!! Attention, c´est un ET ici et pas un OU.
{} //c´est pas très beau, mais ça marche, alors pourquoi pas ...

suite = &mot[i]; // je le mets là, pour que même si la chaine n´a pas été trouvée, suite pointe sur quelque chose, à savoir juste le caractère ´\0´ de la chaine.

if (mot[i]==lettre) // == pour tester l´égalité
{
printf("la lettre a ete trouvé %s",suite);
}
else
{
printf("la lettre est introuvable");
}
} // et un dernier croché fermant.

dnob700
dnob700
Niveau 10
01 septembre 2007 à 12:54:00

oui, c´est "ma" faute : le prototype de la fonction de recherche doit être changé, car elle ne prend plus suite en paramètre, par contre il ne faut pas oublier de faire un "return suite" à la fin de la fonction (et il faut déclarer suite).

au final, ça donne :

  1. include <stdio.h>
  2. include <stdlib.h>

char* recherchecaractere(char mot[],char lettre);

int main(int argc, char *argv[])
{
char mot[]="salut",*suite,lettre=´a´;

suite = recherchecaractere(mot,lettre);

system("PAUSE");
return 0;
}

char* recherchecaractere(char mot[],char lettre)
{
long i,a;
char* suite;

for (i=0;mot[i]!=lettre && mot[i]!=´\0´;i++) //!!! Attention, c´est un ET ici et pas un OU.
{} //c´est pas très beau, mais ça marche, alors pourquoi pas ...

suite = &mot[i]; // je le mets là, pour que même si la chaine n´a pas été trouvée, suite pointe sur quelque chose, à savoir juste le caractère ´\0´ de la chaine.

if (mot[i]==lettre) // == pour tester l´égalité
{
printf("la lettre a ete trouvé %s\n",suite);
}
else
{
printf("la lettre est introuvable");
}

return suite;
} // et un dernier croché fermant.

J´ai dit que ce n´était pas très beau car faire une boucle vide comme ça c´est un peu étonnant (tu peut d´ailleurs remplacer les {} par juste un point virgule).

captainpatate
captainpatate
Niveau 7
01 septembre 2007 à 23:12:39

et merde j´ai envoyé sur mon message ton code au lieu du mien voici le code qui a besoin d´etre corrigé:

  1. include <stdio.h>
  2. include <stdlib.h>

void recherchecaractere(char mot[],char lettre,char suite[]);

int main(int argc, char *argv[])
{char mot[]="salut",suite[100],lettre=´a´;

recherchecaractere(mot,lettre,suite);

system("PAUSE");
return 0;
}
void recherchecaractere(char mot[],char lettre,char suite[])
{
long i,a;

for (i=0;mot[i]!=lettre && mot[i]!=´\0´;i++)
{}

if (mot[i]==lettre)
{
for(a=0;mot[i]!=´\0´;(i++ && a++))
{suite[a]=mot[i];} //c´est pour avoir la suite apres la lettre
printf("la lettre a ete trouvé %s\n",suite);
}
else
{
printf("la lettre est introuvable");
}

}

PS:ton code contient qulque fautes que j´ai corrigé

dnob700
dnob700
Niveau 10
02 septembre 2007 à 00:00:31

écrit :
for(a=0;mot[i]!=´\0´;i++, a++)
avec une virgule plutôt qu´un &&. Ce qui est une séquence d´instruction a exécuter.

D´autre part, le 0 finale n´est pas copié dans la chaine suite puice que lorsque mot[i] == 0 on sors de la boucle. Donc il faut après la dernière bouvle rajoutter un truc genre :
suite[a] = 0;
juste avant le printf la lettre a été trouvé.

captainpatate
captainpatate
Niveau 7
02 septembre 2007 à 20:06:19

merci beaucoup grace a toi mon programme marche maintenat.
PS:tu pourrais pas me donner ton msn t´as l´air de t´y connaitre en programation yu pourrais m´aider

dnob700
dnob700
Niveau 10
02 septembre 2007 à 20:46:01

je n´utilise pas MSN, ça me fait perdre beaucoup trop de temps.

Mais je passe souvent sur le forum, donc tu peut poser tes question ici, d´une part elles serviront à tout le monde, et en plus tu aura plus de réponse que juste les miennes.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment