Mon programme C bloque !!!!

Dan -  
KX Messages postés 19031 Statut Modérateur -
bonjour
lors de la compilation apres l'affichage avec l'instruction :printf ("la chaine avec l'ajout du caractere devient %s : \n",AjoutF (ch,'g')); une fenêtre pour fermer le programme apparaît je ne vois pas ma faute ? a quelle genre de faute dois je m'attendre ?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

char* debut (char* ch )
{

ch[strlen(ch)-1] = '\0';
return (ch);
}
char dernier (char* ch)
{
return (ch[strlen(ch)-1]);
}

char* AjoutF(char *ch, char c )
{
ch[strlen(ch)+1] = ch[strlen(ch)];
ch[strlen(ch)] = c;
system ("pause");
return (ch) ;
}

int longueur ( char* ch)
{
if ( ch == '\0')
return 0 ;
else
return ( 1 + longueur (debut (ch)) );
}

int EstExtraite (char* ch1 , char* ch2 )
{ int i = 0 , j = 0 ;
if (longueur (ch1) > longueur (ch2))
return 0 ;
else if (ch1 == '\0') ;
return 1 ;

if (dernier (ch1) == dernier (ch2) )
return (EstExtraite (debut(ch1) ,debut (ch2)));
else
return (EstExtraite (ch1 , debut (ch2 )));


}
int main ()
{ char ch[20]="allo";
int rep;
char ch1[10] = "abc" , ch2[10]= "kafbc";
printf ("la chaine devient %s\n", debut (ch));
printf ("le dernier caractere de cette chaine est : %c \n",dernier (ch));
printf ("la chaine avec l'ajout du caractere devient %s : \n",AjoutF (ch,'g'));
printf ("la longueur de cette chaine est : %d \n",longueur(ch) );
rep = EstExtraite (ch1,ch2);
printf ("%d \n " ,rep);
getch();
return 0;
}



A voir également:

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
ch[strlen(ch)+1] et ch[strlen(ch)] = c;
Voilà le genre de fautes qui fait planter un programme !
La confiance n'exclut pas le contrôle
0