Je risque d'avoir une mauvaise réputation pour ça, mais tant pis. La pire chose qui puisse arriver est que j'apprenne quelque chose.
Je n'utilise pas vraiment le langage C ces jours-ci, et je n'utilise généralement pas de chaînes de caractères de style C en C++. Mais une idée que j'ai eue est d'écrire un strcpy() modifié qui renvoie la fin de la chaîne :
char* my_strcpy(char*dest, const char* src)
{
while ((*dest = *src++))
++dest;
return dest;
}
Maintenant, Shlemiel peut emmener son seau avec lui :
char prefix[100] = "";
char* bucket = my_strcpy(prefix, argv[0]);
bucket = my_strcpy(bucket, ": ");
bucket = my_strcpy(bucket, cmd_argv[0]);
bucket = my_strcpy(bucket, ": ");
bucket = my_strcpy(bucket, cmd_argv[1]);
perror(prefix);
Je ne l'ai pas testé. Des commentaires ?
EDIT : Suppression de l'inutile my_strcat()
fonction. Il s'avère également que c'est la même chose que stpcpy()
qui fait apparemment partie de POSIX depuis 2008. Voir http://www.manpagez.com/man/3/stpcpy/ .