У меня мало вопросов относительно того, когда использовать malloc
или в этом случае strdup
.
Ниже приведена небольшая функция, которую я украл из Интернета.
Я пытаюсь понять код, но застрял снесколько проблем.
1. код присвоил значение psrc
и pdest
.пример
char* psrc = dups;
char* pdest = s;
Сомнение: нам не нужно использовать malloc
для выделения места для psrc и pdest.?Если нет, то почему.
pdest [0] = '\0';
Приведенная выше строка выделяет символ завершения в начале строки pdest
.тогда ранее почему мы присвоили pdest
на s
.пример char* pdest = s;
?
Любая помощь или критика будет полезна для меня.Спасибо и всего наилучшего, Сэм
char* deldupchars (char* s)
{
char* dups = strdup (s);
if (dups)
{
char* psrc = dups;
char* pdest = s;
char ch;
pdest [0] = '\0';
while ((ch = *psrc++) != '\0')
{
if (! strchr (pdest, ch))
{
*pdest++ = ch;
}
}
pdest [0] = '\0';
free (dups);
}
return s;
}