У меня возникают проблемы при попытке реализовать пользовательскую функцию strcpy, которая должна обрабатывать случаи, когда строка src больше, чем строка назначения. Здесь я предоставил некоторый код, чтобы вы, ребята, могли видеть всю функцию. Моя проблема в том, что каждый раз, когда я увеличиваю * dest, он переходит в нулевой адрес, несмотря на то, что я выделил достаточно памяти, чтобы вместить в него весь src. Это вызывает ошибку сегментации в (двойной указатель) dest = * src. dest хранится как char **, потому что в действительности аргумент, который должен быть передан, является другой строкой, возможно, меньшего размера, чем src, и я хочу перезаписать * dest настолько безопасно, насколько смогу.
int customStrCpy(char** dest, char* src){
int strlen1 = strlen(*dest), strlen2 = strlen(src);
if(strlen1 < strlen2){
//Creates a dynamically allocated array that is big enough to store the contents of line2.
*dest = calloc(strlen2, sizeof(char));
char* backup_str = *dest;
int copy_arrs;
for(copy_arrs = 0; copy_arrs < strlen2; copy_arrs++){
**dest = *src;
*dest++; src++;
}
*dest = backup_str;
}
else strcpy(*dest, src);
}
В конце (char **) dest должен указывать на правильную строку.