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
| int main()
{
char *salut = "Bonjour";
char *copie_salut;
int taille = len(salut);
printf("la longueur de la chaine: '%s' manipuler est de: %d\n",salut, taille);
copie_salut = copie_cibler(salut,0,0);
printf("La copie donne sans les 2 derniers arg: %s\n", copie_salut);
free(copie_salut);copie_salut = NULL;
//on oublie pas que l'indice de base est zéro
copie_salut = copie_cibler(salut, 3, 0);
printf("En ciblant le debut de la copie sur le 4ieme indice, cela nous donne: %s\n", copie_salut);
free(copie_salut);copie_salut = NULL;
copie_salut = copie_cibler(salut, 0, 2);
printf("En ciblant la partie comprise du début au 3ieme indice, cela nous donne: %s\n\n", copie_salut);
free(copie_salut);copie_salut = NULL;
copie_salut = copie_cibler(salut, -1, 12);//dépassement d'indice fin
printf("En tentant un debordement, cela nous donne toujours: %s\n\n", copie_salut);
/**et maintenant avec un type tableau*/
char inconnu[8] = {'B','o','n','j','o','u','r','!'};
/**un programmeur distrait qui a oublié la convention du caractère null */
printf("Avec l'absence du delimiteur on a ceci: %s et une longueur de : %d\n",inconnu, len(inconnu));
printf("Que faire contre cet incident?\n\n");
free(copie_salut);copie_salut = NULL;
/**la fonction n'a pas le même comportement que printf. J'aimerais bien svoir pourquoi? */
copie_salut = copie_cibler(inconnu, 3, 20);
printf("Curieusement en creant une copie, la longueur de la copie est: %d\n", len(copie_salut));
printf("Et la copie se limite juste au derniers caracteres du tableau: %s\n", copie_salut);
/** Le type tableau qui se confond beaucoup avec les pointeurs aurait-il quelque chose de particulièrement utile dans ce cas?*/
/** Cela est-il dû à l'instruction "while(chainee[n++]" de la fonction len ? */
free(copie_salut);
return 0;
} |
Partager