Bonjour,

Je débute depuis 10 mois pour apprendre le langage C à raison de 4-8 hr par semaine. Dans le code ci-dessous repris du chapitre 10 du site.
je ne comprends pas comment à l'appel de EgalCh 'n' change de valeur (ou conserve la valeur - de l'appel de la dernière fonction - décrémentée).

J'ai une petite idée des notions de static...Est-ce que ça s'applique dans ce cas? Par défaut, c'est toujours la même chose. Dans les autres langages qui emploient des fonctions avec. Je m'éloigne peut-être du sujet dans la dernière question, c'est juste pour anticiper disons...

Merci,
Pascal

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
 
int main(void)
{
	char *ChercheCh(char *Ch1, char *Ch2) ;
	char Txt1[50] ;
	char Txt2[50] ;
	char *pTxt1 = Txt1 ;
	char *pTxt2 = Txt2 ;
	char *rep ;
 
	printf("\n\nEntrez un mot a rechercher : ") ;
	fgets(pTxt1, 50, stdin) ;
	printf("\nEntrez une phrase sujet : ") ;
	fgets(pTxt2, 50, stdin) ;
 
	rep = ChercheCh(pTxt1, pTxt2) ;
 
	printf("\nPosition : %c", *rep) ;	
 
	printf("\n\n") ;
	return 0;
}
 
char *ChercheCh(char *Ch1, char *Ch2)
{
	int LongCh(char *Ch) ;
	int EgalCh(int n, char *Ch1, char *Ch2) ;
	int Lg ;
 
	Lg = LongCh(Ch1) ;
 
	while ( *Ch2  &&  !EgalCh(Lg, Ch1, Ch2) )
		Ch2++ ;
 
	return Ch2 ;
}
 
int LongCh(char *Ch)
{
	char *p ;
 
	for ( p = Ch  ;  *p  ;  p++ )
		;
 
	return p - Ch ;
}
 
int EgalCh(int n, char *Ch1, char *Ch2)
{
	while ( --n  &&  *Ch1 == *Ch2 )
	{
		Ch1++ ;
		Ch2++ ;
	}
	return ( *Ch1 == *Ch2 ) ;
}