Bonjour,

J'ai un petit programme qui prend un verbe du premier groupe à l'infinitif et qui le conjugue. Le hic est que le verbe conjugué contient un ou plusieurs caractère aléatoire(s).

Voici le code :
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
 
#include <stdio.h>
#include <string.h>
 
 
int main(int argc, char const *argv[])
{
	char verbe[50];
	char * v = verbe;
	char racine[50];
	char * r = racine;
	int len, i;
 
	printf("Donnez un verbe du premier groupe : \n");
	scanf("%s", &verbe);
	len = strlen(v)-2;
 
	printf("\nLen : %i\n", len);
 
	for (i=0; i<len; i++) {
		r[i]=v[i];
	}
	r[i+1]='\0';
 
	printf("\nRacine : %s\n", r);
	printf("Je %se\n", r);
	printf("Tu %ses\n", r);
 
	return 0;
}
Le principe est de récupérer l’infinitif du verbe, d'en retire le "er" final pour obtenir la racine que j'intègre dans le format des printf en fonction du pronom.

J'obtient d'étranges résultats :
{ c }  » ./conj.exe                                                     /cygdrive/e/bin/scripts/c
Donnez un verbe du premier groupe :
donner

Len : 3

Racine : don
Je done
Tu dones
{ c }  » gcc conj.c -o conj.exe                                         /cygdrive/e/bin/scripts/c
{ c }  » ./conj.exe                                                     /cygdrive/e/bin/scripts/c
Donnez un verbe du premier groupe :
donner

Len : 4

Racine : donnV▒▒w
Je donnV▒▒we
Tu donnV▒▒wes
{ c }  » 
Au premier essai, j'ai réduit la racine d'une lettre pour voir le comportement (dans la ligne "len=strlen..."). J'ai fait un retour arrière pour le second.

Je compile avec GCC sous babun (une variante de cygwin sur Windows).

Merci a qui pourra m'éclairer sur l'origine de ces caractères.