Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2590 connectés 

 


Dernière réponse
Sujet : transformer une chaine de caracteres en C
-Golgotor- de rien
et bon courage !

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
-Golgotor- de rien
et bon courage !
paranoidandroid [citation]
 
(c'est koi qui passe pas ?? le principe est super simple.
recherche un cours sur les pointeurs si tu comprend pas le principe.)  
[/citation]
 
C'est depuis juste 2 jours que je code en C
et j'avais urgemment besoin de trouver une astuce pour ça ..
 
Merci pour les réponses ...
El_gringo

youdontcare a écrit a écrit :

* while (mot[pos] != ' ')  
 
déjà, tester si mot != null
 
* return lemot[];  
 
tu retournes une variable temporaire qui est détruite au sortir de la fonction.  




 
et surtout, une fonction ne rend JAMMAIS un tableau. c comme ça.
tu peux rendre un pointeur vers un tableau (lemot), c tout.

-Golgotor- ha au fait ya une chtite erreur dans mon code...
avant la derniere } il faut mettre : return -1
 
int lg = long_chaine(chaine);
if (lg <0) { printf("chaine non instanciée." ) } else
{ printf ("longueur chaine : %d",lg); };
 
voila ...
 
(c'est koi qui passe pas ?? le principe est super simple.
recherche un cours sur les pointeurs si tu comprend pas le principe.)
paranoidandroid Merci ..pour les encouragements [:atog]
-Golgotor- :ange:  :ange:  :ange:  :ange:
-Golgotor- tu peut faire une petite fonction renvoie le nombre de caracteres.
Ton message peut contenir des espaces.
on part de la fin du tableau .
 
tu peut aussi mettre a jour le '\0'
 
int long_chaine(char *c) {
 
        int lg_chaine ;
 char *index ;
 
 if (c != null) {
  lg_chaine = strlen(c);  
  index = c + lg_chaine + 1 ; /* index pointe sur le \0 */  
  do { index -- } while (*index == ' ');
  /* s'arrette sur le premier car rencontre a partir de la fin */
  // si tu veux mettre a jour le caractere terminal :
  // *(index+1) = '\0';
 
  return index-c ;  
 }      
}
 
bon courage !
 
ps : pour le retour de machin[] c'est bon il faut
juste declarer ta fonction non pas en void mais en
*char. (pointeur sur le tableau)
 
voila.....
youdontcare

trictrac a écrit a écrit :

Je suis pas sur que ca pose probleme... en tout cas je vois pas pourkoi.


c'est une variable temporaire, allouée sur la pile. je ne te demande pas de me croire, regarde les faits : teste, observe le code compilé, etc.
 
*boum*

trictrac youdont..>
 
-return lemot
 
Je suis pas sur que ca pose probleme... en tout cas je vois pas pourkoi.
youdontcare * while (mot[pos] != ' ')  
 
déjà, tester si mot != null
 
* return lemot[];  
 
tu retournes une variable temporaire qui est détruite au sortir de la fonction.
paranoidandroid j'ai une erreur ..
 
longtab(char mot[])
{
 int nb_char;
 int pos=0;
 char lemot[MAXLONG]; //MAXLONG = 40
 
 while (mot[pos] != ' ')
  {
   lemot[pos]=mot[pos];
   pos++;
  }
 nb_char = strlen(lemot);
 return lemot[];
}
 
depuis que j'ai inséré ce script j'ai une erreur des l'execution du programme ...  
erreur du genre : "Erreur Programme Ok? déboguer? fermer ?"
Carbon_14 En partant de la fin, on cherche en boucle l'espace, tant que y en a un, on recule d'un cran. Quand y a plus, on met alors le '\0' à cet endroit incrémenté de 1. On aura tj 40 cases, mais l'indicateur de fin de chaîne sera bien placé.
paranoidandroid j'essaye ...
 
Merci !
dragonsphax y'a deux fonction sympa  
char *strchr(const char *s, int c);  
te retourne un pointeur sur le premier c trouve
                                     
char *strrchr(const char *s, int c);
te retourne un pointeur sur le dernier c trouve
 
et pour tes espace ba tu cherches le premier espace tu chopes un pointeur dessus et tu fait une copi de ta chaine jusqu'au pointeur et le tours est joue
paranoidandroid Voilà, supposons que j'ai ce tableau :  
 
mot[40] = {'B','o','n',
'j','o','u',&#
039;r',' ',' ',' ',' ',' ','\0'}  
 
si je fais :  
 
longueur = strlen(mot);  
 
j'obtiendrais longueur = 12 , n'est ce pas ...  
Mais moi je veux enlever les espaces à la fin du mot ..  
 
je veux le couper et ne garder que les valeurs du tableau où il y a des lettres ...  
 
je veux transformer donc mot[40] = {'B','o','n',
'j','o','u',&#
039;r',' ',' ',' ',' ',' ','\0'} en mot[40] = {'B','o','n',
'j','o','u',&#
039;r','\0'}  
 
Comment faire ?  
 
merci beaucoup pour votre aide..

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)