Я мог бы получить репутацию за это, но какого черта.Худшее, что может случиться, это то, что я чему-то научусь.
В настоящее время я действительно не использую C, и обычно я не использую строки в стиле C в C ++.Но у меня есть одна идея - написать модифицированный strcpy (), который возвращает конец строки:
char* my_strcpy(char*dest, const char* src)
{
while ((*dest = *src++))
++dest;
return dest;
}
Теперь Шлемиэль может взять с собой свое ведро:
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);
Iне проверял это.Комментарии?
РЕДАКТИРОВАТЬ: Удалена ненужная функция my_strcat()
.Также оказывается, что это то же самое, что и stpcpy()
, который, по-видимому, является частью POSIX с 2008 года. См. http://www.manpagez.com/man/3/stpcpy/.