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

  FORUM HardWare.fr
  Programmation
  C

  défilement de caractères de gauche à droite

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

défilement de caractères de gauche à droite

n°1085186
bipeuh
Posté le 16-05-2005 à 11:04:28  profilanswer
 

je cherche à réaliser un prog c qui décale d'un rang les caractères une chaine de gauche à droite. Par exemple :
 
"oooooooo>>>>>>>>"
">oooooooo>>>>>>>"
">>oooooooo>>>>>>"
">>>oooooooo>>>>>"
">>>>oooooooo>>>>"
">>>>>oooooooo>>>"
etc à chaque itération. Sachant que je dois rediriger le flux vers un afficheur LCD 8 caractères, je réalise ensuite un masque sur les 8 premiers caractères avec %.8s dans mon printf.
 
 
mon code actuel ne fonctionne pas et je ne comprends pas pourquoi... :cry:  
int main()
{
    char phrase[58];
    char tampon;
    int k = 0;
    int i = 0;
    int nb_char = 0;
 
    sprintf(phrase,"oooooooo>>>>>>>>" );
    nb_char=strlen(phrase);
 
    for (k=0;k<30;k++)
    {
        tampon = phrase[nb_char-1];
        for (i=0;i<nb_char-2;i++) phrase[nb_char-1-i]=phrase[nb_char-2-i];
        phrase[0]=tampon;
        printf("%.8s\n",phrase);
    }
    return 0;
}
 
En effet, j'obtiens :
>ooooooo
>ooooooo
>ooooooo
>ooooooo
>ooooooo
>ooooooo
>ooooooo
>ooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
 


---------------
celui qui pose une question est idiot 5 minutes, celui qui n'en pose pas le reste toute sa vie.
mood
Publicité
Posté le 16-05-2005 à 11:04:28  profilanswer
 

n°1085216
bipeuh
Posté le 16-05-2005 à 11:25:57  profilanswer
 

désolé...
for (i=nb_char-1;i>0;i--) phrase[i]=phrase[i-1];
 
au lieu de  
 
for (i=0;i<nb_char-2;i++) phrase[nb_char-1-i]=phrase[nb_char-2-i];
 
et c'est tout bon :sol:  
 
il n'empêche que je ne comprends toujours pas pourquoi ça ne fonctionne pas...


---------------
celui qui pose une question est idiot 5 minutes, celui qui n'en pose pas le reste toute sa vie.
n°1085248
skelter
Posté le 16-05-2005 à 11:50:26  profilanswer
 

for (i=0;i<nb_char-1;i++) phrase[nb_char-1-i]=phrase[nb_char-2-i];
ou
for (i=0;i<=nb_char-2;i++) phrase[nb_char-1-i]=phrase[nb_char-2-i];

n°1085316
bipeuh
Posté le 16-05-2005 à 12:57:12  profilanswer
 

skelter a écrit :

for (i=0;i<nb_char-1;i++) phrase[nb_char-1-i]=phrase[nb_char-2-i];
ou
for (i=0;i<=nb_char-2;i++) phrase[nb_char-1-i]=phrase[nb_char-2-i];


 
merci... coup classique  :whistle:


---------------
celui qui pose une question est idiot 5 minutes, celui qui n'en pose pas le reste toute sa vie.
n°1085500
Emmanuel D​elahaye
C is a sharp tool
Posté le 16-05-2005 à 15:32:33  profilanswer
 

bipeuh a écrit :

tuel ne fonctionne pas et je ne comprends pas pourquoi...


Meuh...

../main.c:13: warning: function declaration isn't a prototype
 
../main.c: In function `main_':
../main.c:20: warning: implicit declaration of function `sprintf'
../main.c:20: warning: nested extern declaration of `sprintf'
<internal>:0: warning: redundant redeclaration of 'sprintf'
 
../main.c:21: warning: implicit declaration of function `strlen'
../main.c:21: warning: nested extern declaration of `strlen'
 
<internal>:0: warning: redundant redeclaration of 'strlen'
../main.c:28: warning: implicit declaration of function `printf'
../main.c:28: warning: nested extern declaration of `printf'
<internal>:0: warning: redundant redeclaration of 'printf'


 
Une bonne occasion d'utiliser memmove()... (pas subtil, mais simple et correct). On pourraut être plus fin et éviter ces copies incessantes en utilisant un ou deux index de lecture tournant...


#include <stdio.h>
#include <string.h>
 
int main (void)
{
   char phrase[58] = "123456789abcd";
   size_t const nb_char = strlen (phrase);
   int k;
 
   for (k = 0; k < 30; k++)
   {
      int tampon = phrase[nb_char - 1];
 
      memmove (phrase + 1, phrase, nb_char -1);
      phrase[0] = tampon;
 
      printf ("%.8s\n", phrase);
   }
   return 0;
}


Message édité par Emmanuel Delahaye le 16-05-2005 à 15:49:41

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1096126
bipeuh
Posté le 25-05-2005 à 10:54:49  profilanswer
 

c'est tout de suite plus élégant!


---------------
celui qui pose une question est idiot 5 minutes, celui qui n'en pose pas le reste toute sa vie.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  défilement de caractères de gauche à droite

 

Sujets relatifs
[ ASP / JavaScript ? ] Manipulation chaîne de caractèresBarre de défilement horizontale en haut
logo par défaut à gauche des URLproblème de get sur les chaines de caracteres (buffer)
problème avec l'envoi de mail : caractères mangés[PERL] Gestion des caractères accentués
[PHP / J.S] Champ texte dans un formulaire et caractères spéciaux[Java/xml] Caractères à la con ds un .xml généré en dom
[JAVA] caractères accentué différents selon OS[sdl] catcher l'evenement click droit et gauche simultanné
Plus de sujets relatifs à : défilement de caractères de gauche à droite


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR