Exercice 5
1. Ecrire la fonction LONG_CH qui retourne la longueur d'une chaîne de caractères CH comme résultat.
SOL : à travers cette question on donne une implémentation de la fonction prédéfinie de calcul de la longueur d’une chaine de caractères dont le prototype est : int strlen(char *)
La fonction LONG_CH retourne un entier qui est la longueur de la chaine reçu comme en paramètre.
int LONG_CH(char *ch) // ou int LONG_CH(char ch[])
{ int i=0 ; //indice de parcours de la chaine pour chercher le zéro de fin de chaine
While(ch[i] !=' ') i++ ;
return i ; //i contiendra le nombre de caractère de la chaine sans compter le zéro de fin de chaine
}
2. Ecrire la fonction AJOUTE_CH qui reçoit deux paramètres CH1 et CH2 et copie la chaîne de caractères CH2 à la fin de la chaîne CH1.
SOL : implémentation de la fonction prédéfinie de concaténation de deux chaines dont le prototype est :
char * strcat (char * , char * )
char * AJOUTE_CH(char *ch1 , char *ch2) // ou char * AJOUTE_CH(char ch1[] , char ch2[])
{ int i , n1 , n2 ;
n1 = LONG_CH(ch1) ; // ou n1 = strlen(ch1) ;
while(ch2[i] !=' ')
{ ch1[n1+i] = ch2[i] ; i++ ;}
Ch1[n1+i]=' ' ;
return ch1 ;
}
3. Ecrire la fonction EGAL_N_CH qui retourne la valeur 1 si les N premiers caractères de CH1 et CH2 sont égaux, sinon la valeur 0.
SOL : implémentation simplifier de la fonction prédéfinie de comparaison d’au plus n premiers caractères de deux chaines passées en paramètres.
Le prototype est : int strncmp(char * , char * , int)
int EGAL_N_CH(char *ch1 , char *ch2 , int n)
{ int n ;
for ( i = 0 ; i < n ; i++ )
{
if (ch1[i] !=ch2[i]) return 0 ;
if(ch1[i]==’