Ну, во-первых, вам нужно найти хранилище для вашей новой строки. Если все, что я знаю об источнике, это char *
, я не знаю, указывает ли он на буфер, который я могу перезаписать и / или достаточно длинный, или мне нужно выделить новый буфер.
Чтобы выделить новый буфер, это будет примерно так:
char * strprep(char c, const char * myChar)
{
/* length, +1 for c, +1 for '\0'-terminator */
char * newString = malloc(strlen(myChar) + 2);
/* out-of-memory condition rolls downhill */
if (newString == NULL) return NULL;
/* populate the new string */
newString[0] = c;
strcpy(newString + 1, myChar);
return newString;
}
Чтобы перезаписать на месте, вам нужно переместить символы, чтобы освободить место для нового начала строки:
char * strprep(char c, char * myChar)
{
int len = strlen(myChar);
int i;
/* Move over! */
for (i = len; i >= 0; i--) myChar[i + 1] = myChar[i];
/* Now plug in the new prefix. */
myChar[0] = c;
return c;
}
Если в вашей библиотеке C она есть, вы можете использовать memmove
вместо цикла, чтобы сместить исходные символы на единицу.