Bonjour à tous,

Alors voilà j'ai un petit soucis. J'essaye de créer un programme qui déplace un paramètre sur une chaine qui fait deux fois la longueur de ce paramètre. Et à chaque déplacement de la taille d'un espace la première lettre du paramètre doit passer en dernière.

Ex:

hello
elloh
llohe
lohel
ohell
hello

Bien entendu le déplacement s'effectue sur une seule ligne. Bref pour l'instant je cherche déjà à gérer le déplacement du paramètre. Pour faire en sorte que le mot se déplace sur deux fois sa longueur. Mais à chaque fois que je compile et que j’exécute ça m'affiche segmentation fault. Je n'arrive pas à en comprendre la raison.

Le programme est le suivant (juste pour mettre le déplacement du mot):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdlib.h>
 
void main(int argc, char **argv)
{
int lengh;
char *str;
int lengh2;
 
lengh = (2 * my_strlen(argv[1]));
lengh2 = (my_strlen(argv[1]));
str = malloc(lengh);
my_movement(str, lengh, lengh2);
}
 
int my_movement(char *str, int lengh, int lengh2)
{
int i;
 
i = 0;
while(i + lengh2 < lengh)
{
my_putchar(' ');
i++;
my_putstr(str);
}
}
 
void my_putstr(char *str)
{
while (*str != '\n')
{
my_putchar(*str);
str++;
}
}
Sachant que le my_putchar est forcément bon.

Quelqu'un aurait-il une idée de mon erreur ? merci d'avance.