Bonjour, j ai plusieurs questions concernant les chaines de caractères...

1) Je viens de parcourir ce tuto et je me suis rendu compte que, par exemple, la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
strcpy(char * out, const char * in)
ne s'occupe pas d'allouer la memoire nécessaire à la copie.
Si bien qu en fait je dois plutot ecrire un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
out = malloc(sizeof(char) * (strlen(in)+1)); strcpy(out,in);/* blabla */; free(out);
J'imagine que c'est pour qu'on n'oublie pas au passage de liberer out.
Du coup je me pose une question sur strcat(char * Res, const char * toAppend)...
Est ce que pour concatener deux chaines de caracteres je dois en fait faire quelquechose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
char* Res2=malloc(sizeof(char) * (strlen(Res)+strlen(toAppend)+1);
strcpy(Res2,Res);
free(Res); /* Je suppose que Res a été alloué... */
strcat(Res2,toAppend);
Res = Res2;
Il doit y avoir un truc qui m’échappe parce que ça me parait pour le moins lourdingue...

2) Je ne la vois pas dans le tuto mentionné plus haut mais existe-t-il une fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
char* commeprintf(const char* S,...)
qui pour un appel du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
commeprintf("Salut %s","Toto");
me renverrait la chaine "Salut Toto" ?
Ou bien sur toute autre fonction au comportement analogue... dans string.h ou pas d'ailleurs.

Merci !