[C] Rotation d'une chaine de caractère
Bonjour à tous,
Voilà j'ai un petit soucis dans mon code.
Dans l'éxecution de mon programme (en C) je dois effectuer une rotation
à droite par quartets d'une chaine de caractères.
Voilà l'exemple :
1er carac 2eme carac 3eme carac .....
aaaa bbbb | cccc dddd | eeee ffff .....
Une fois la rotation effectuée la chaine à cette tête là :
1er carac 2eme carac 3eme carac ....
ffff aaaa | bbbb cccc | dddd eeee .....
et là j'avoue que je sêche un peu... auriez vous quelques idées ?
Merci beaucoup
Romain
Voilà j'ai un petit soucis dans mon code.
Dans l'éxecution de mon programme (en C) je dois effectuer une rotation
à droite par quartets d'une chaine de caractères.
Voilà l'exemple :
1er carac 2eme carac 3eme carac .....
aaaa bbbb | cccc dddd | eeee ffff .....
Une fois la rotation effectuée la chaine à cette tête là :
1er carac 2eme carac 3eme carac ....
ffff aaaa | bbbb cccc | dddd eeee .....
et là j'avoue que je sêche un peu... auriez vous quelques idées ?
Merci beaucoup
Romain
A voir également:
- Rotchar
- Caractère ascii - Guide
- Rotation ecran windows - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Rotation video - Guide
4 réponses
Je te propose un code dans ce genre :
Ce qui donne à l'exécution :
Bonne chance
#include <stdio.h> #include <stdlib.h> void strcpy_dec(char *dst,const char *src,unsigned decalage){ unsigned i,n = strlen(src); for(i=0;i<n;++i) dst[i] = src[(i+decalage)%n]; dst[n] = '\0'; } int main(){ char *str="aaaabbbbccccdddd"; char *tmp = (char *)malloc((strlen(str)+1)*sizeof(char)); strcpy_dec(tmp,str,4); printf("str = %s\n",str); printf("tmp = %s\n",tmp); free(tmp); return 0; }
Ce qui donne à l'exécution :
(mando@aldur) (~) $ gcc -W -Wall -g plop.c (mando@aldur) (~) $ ./a.out str = aaaabbbbccccdddd tmp = bbbbccccddddaaaa
Bonne chance
j'avais fait quelque chose de cette ordre là :
Mais j'ai pas passé en paramètre la valeur du décalage.
Merci
Est ce qu'il suffit de faire : for(i=0;i<n;++i) dst[i] = src[(i-decalage)%n]; ?
Merci