Функция Strdup в программировании на C

Readv на C Программирование и разработка

Strdup — это переменная, подобная целому числу и символу в языке программирования C, которая атрибутирует почти все символы, используемые в языках программирования. Строковая переменная имеет несколько встроенных функций. Эти функции поддерживаются заголовочным файлом string.h. Strdup также входит в число этих встроенных функций. Эта статья будет полезна для использования strdup в языке программирования C.

Strdup

Как следует из названия, слово «strdup» состоит из двух слов: «string» и «duplicate». Оба эти слова объединяются, чтобы сформировать strdup. Значение ясно показывает, что функция используется для дублирования содержимого одной строки в другую. Как и strdup, существует еще одна встроенная функция strndup. Это работает как strdup, но дублирует количество «n» данных. Мы не будем использовать слово «копировать» для этой функции, так как копирование данных — это функциональность другой встроенной функции строк в C, которая называется strcpy. Мы также обсудим разницу между ними позже в этой статье. Чтобы понять работу, нам нужно понять синтаксис.

Синтаксис

#include <string.h>

char* strdup(const char* src);

То же самое касается того, как используется библиотека, как упоминалось ранее. Затем, когда мы рассмотрим основной синтаксис, мы увидим, что используется возвращаемый аргумент, который является символом. Эта функция возвращает значение/указатель на строку с завершающим нулем. Поскольку указатель является символом, мы использовали «char» вместо любого другого типа данных. Затем в параметре функции strdup мы использовали постоянный указатель на строку, которую необходимо продублировать. Это явление будет понятно на приведенных примерах.

С названием указателя мы столкнулись с его функцией хранения адресов. Итак, это использование указателя точно так же связано с выделением памяти.

Прежде чем перейти к примерам, мы увидим несколько полезных описаний, касающихся strdup, в руководстве по Linux. Поскольку мы собираемся реализовать это в среде Linux, мы должны иметь представление об этой функции. Перейдите в терминал и просто используйте следующую команду:

man strdup

Эта функция приведет вас на страницу руководства. Эта страница содержит все типы и функции strdup, а также синтаксис для каждого типа:

Эта страница содержит все типы и функции strdup, а также синтаксис для каждого типа

Пример 1

Для реализации соответствующей функции мы использовали текстовый редактор. Мы пишем коды в редакторах и выполняем результаты на терминале Linux. Теперь рассмотрим код. Во-первых, мы использовали библиотеку строк в заголовочном файле:

#include<string.h>

В основной программе мы использовали один кусок строки, содержащий строку:

В основной программе мы использовали один кусок строки

Чтобы продублировать строку, нам сначала нужно взять другую переменную типа указателя. Здесь он называется «цель». Затем мы воспользуемся функцией strdup для копирования строки:

Char* target = strdup(string);

А затем мы возьмем отпечаток мишени. Использовать strdup довольно просто, как и другие строковые функции. Сохраните код с расширением «c». Теперь перейдите к терминалу, а затем мы будем использовать компилятор для компиляции и последующего выполнения кода этого файла. Итак, для языка программирования C мы будем использовать компилятор «GCC»:

gcc –o strdup strdup.c

$ ./strdup

Вы увидите результирующее значение, которое является именем, которое мы записали во входном файле. «-o» используется для сохранения результатов в файле и вывода их оттуда на экран.

Пример 2

Второй пример — использование strndup. Как уже говорилось, он дублирует значение строки до некоторой степени, указанной в функции. Следуя тому же подходу, используйте библиотеку строк и инициализируйте строку входным значением. Выделяется новая динамическая память, и с помощью указателя все значения дублируются во второй строке. Мы продублируем 7 символов из входной строки во вторую:

Char* target = strndup(string, 7);

Используя это, вы увидите, что учитываются только первые 7 байтов

Используя это, вы увидите, что учитываются только первые 7 байтов, и отображается их содержимое. Посмотрите результаты в терминале с помощью компилятора GCC:

Читайте также:  Как настроить сообщения журнала в библиотеке запросов Python?

Посмотрите результаты в терминале с помощью компилятора GCC

Вы можете видеть, что в результате отображаются первые 7 значений.

Разница между Strdup и Strcpy

Используя эту функцию, вы, должно быть, задавались вопросом, дублирует ли id strdup() входную строку, а strcpy() копирует входную строку, в чем разница?

Ответ на этот вопрос можно найти в реализации обеих функций. Когда мы используем функцию strcpy:

Strcpy(dst, src)

В этой функции мы копируем данные из исходного файла в целевой файл. Принимая во внимание, что в случае функции strdup() нам нужно выделить, а затем отменить выделение памяти с назначением. Это различие возникает из-за того, что функция strcpy копирует данные только из одного файла в другой; нет необходимости указывать конкретное место в памяти. Теперь мы будем использовать простой код для strcpy, чтобы продемонстрировать концепцию его использования с strdup:

void strcpy(char* dest, char* sorc) {

while (*dest++ = *sorc++);

}

Этот оператор показывает, что параметр содержит как исходный, так и конечный элементы в качестве аргумента. Мы можем использовать strcpy как для статического, так и для динамического выделения памяти. Потому что во время выполнения конкретный файл выбирается в определенном пространстве памяти. Итак, эта демонстрация показывает использование strcpy с точки зрения strdup.

В случае strdup мы используем специальную функцию malloc() для динамического выделения памяти. Но желательно, если вы удалите контент или освободите место после использования. Поэтому для этой цели просто используйте strdup() с malloc(), а затем скопируйте исходную строку в выделенную память.

Еще одна функция, которая используется в дополнение к strdup, — «memcpy». Это используется для увеличения скорости дублирования строки из источника по сравнению с strcpy.

В этом примере используется функция, имеющая strdup с аргументами входной строки в качестве источника. Strlen — это функция строки, используемая для получения общей длины строки. После этого используется переменная-указатель, в которой строка должна быть продублирована через malloc. Сначала система проверяет, пуста ли переменная с помощью оператора if. Если место свободно, то значение должно быть продублировано туда. Функция memcpy также принимает ввод, вывод и длину для своей быстрой цели:

Читайте также:  Initializer Lists C++

В этом примере используется функция, имеющая strdup с аргументами входной

Основная программа принимает строку, которую мы хотим предоставить. Затем вызывается функция для значения, которое будет сохранено в выходном значении. Отображаются как входные, так и выходные значения. В конце концов, используемое пространство свободно:

Вывод

Эта статья «Использование функции Strdup» реализована на языке программирования C, чтобы продемонстрировать работу и ее использование с помощью элементарных примеров. Мы привели отдельные примеры для strdup и strndup. Прочитав эту статью, вы сможете различать strdup и strcpy, поскольку каждая функция объясняется примерами, чтобы различать их использование. Мы надеемся, что этих усилий будет достаточно, чтобы возглавить доступ к языку программирования C в аспекте строковых функций. Дополнительные советы и информацию можно найти в других статьях Linux Hint.

Оцените статью
bestprogrammer.ru
Добавить комментарий