Devolver una cadena desde una función C

Devolver una cadena desde una función C

A cadena es una secuencia de caracteres que consta de un solo carácter o múltiples caracteres y es una estructura de datos importante en la programación de computadoras. Al trabajar con instrumentos de cuerda En C, se requiere que ciertas operaciones se realicen en el cadena Tipo de datos como la inicialización del cadena, asignar contenido, concatenar el instrumentos de cuerda, comparación instrumentos de cuerda, y devolviendo el cadena.

Este artículo se centra en una de esas operaciones en el cadena Estructura de datos, que está devolviendo un cadena de una función c.

Devolver una cadena desde una función C

Como cadena es una matriz de caracteres y para devolver la cadena de una función C, un puntero a la estructura de datos de cadena debe aprobarse como un argumento desde la función de llamada a la función llamada como un parámetro. El puntero se puede usar para señalar una matriz de caracteres. Una vez que el puntero apunta a una serie de personajes, el cadena El valor se puede devolver desde la función llamada utilizando la instrucción de retorno.

Puede ver el ejemplo de abajo para una mejor comprensión.

#incluir
const char* myname ()
regresar "John";

int main (void)
printf ("%s", myname ());

En el código anterior, en lugar de declarar la variable como lo hacemos normalmente, usamos un puntero con él para que cuando devolvamos esta cadena, no se produce ningún error.

Producción


Una función C no puede devolver un cadena que se ha especificado como una variable local ya que la variable se eliminará inmediatamente (liberado) cuando la función haya terminado de ejecutarse, lo que no está disponible y activa una advertencia como a continuación:

#incluir
const char myname ()
Char name = "John";
nombre de retorno;

int main (void)
printf ("%s", myname ());

En este código, un advertencia se activa a medida que se devuelve la cadena sin cualquier puntero.

Producción


Entonces, puede escribir el código de la siguiente manera:

#incluir
const char* myname ()
char *name = "John";
nombre de retorno;

int main (void)
printf ("%s", myname ());

Producción


Las variables se asignan en la pila de forma predeterminada, que es la razón real de la declaración anterior. Sin embargo, cuando se declara un puntero, el valor que señala se asigna en el montón, que no se borra después de que la función esté terminada. Una vez que se asigna la memoria, una copia del cadena debe crearse a partir de la ubicación de memoria original apuntada por el puntero y la copia debe devolverse desde la función llamada. La función de llamada tendrá control sobre los datos de cadena originales, mientras que la función llamada es responsable de liberar el espacio asignado.

Conclusión

Una función C puede tomar un puntero a cadena como argumento y devolver el cadena valor como resultado de las operaciones realizadas dentro de la función llamada. El enfoque para lograr esto es usar un puntero de char*. La función de llamadas será responsable de la memoria asignada para almacenar el cadena, mientras que la función llamada es responsable de liberar el espacio asignado.