Cómo pasar una cadena como argumento a una función y devolver una cadena en C

Pasar una cadena a una función

Pasamos la dirección de la matriz de caracteres (cadena) a la función, también debido a esto, cualquier cambio que realicemos en esta cadena en nuestra función se refleja de nuevo.
Otra cosa interesante es que el nombre de la cadena es un puntero constante al primer elemento de esa matriz, por lo que en realidad también podemos escribir Example (& str [0])

#include
usando el espacio de nombres estándar;

Ejemplo vacío (char * s) {
s [0] = ‘p’;
char x = s [4];
// hacer cualquier cosa como una matriz de caracteres normal
}

int main () {
char str [] = “Pasando una cadena”;
Ejemplo (str);
cout << str << endl;
devuelve 0;
}

Devolviendo una cuerda

Ahora, esto es complicado, debe estar familiarizado con el hecho de que la memoria para un miembro de datos se libera una vez que la función queda fuera de alcance. Principalmente evitamos este hecho porque retornamos por valor para ex

int función () {
int x = 10;
volver x;
}

Esto funciona siempre porque el valor en la memoria bloqueada se copia a la variable que acepta esto y luego se elimina el bloque de memoria de x.

A diferencia de esto, tenemos que devolver un puntero a la matriz en caso de cadenas, matrices, etc. Así que esto significa la dirección del primer elemento de la matriz de caracteres definida en la función desde la que devolvemos esta cadena, por lo tanto, la memoria debe conservarse .

Para preservar la memoria, utilizamos una palabra clave “estática” que crea una sola memoria independientemente del límite de la función.

#include
usando el espacio de nombres estándar;

char * Ejemplo () {
static char * str = “¡Hola, mundo!”;
volver str;
}

int main () {
char * s = Ejemplo ();
cout << s << endl;
devuelve 0;
}

No entiendo por qué intentas hacerlo porque las cadenas en C son las matrices de caracteres que se pueden pasar a las funciones usando char * o char [].
Como son matrices, se pasan a las funciones como punteros de forma predeterminada. Por lo tanto, no necesita devolver la cadena modificada a medida que se actualiza en la función de llamada.
Sin embargo, si aún desea devolver una cadena, simplemente haga que el tipo de retorno de la función sea char *. Aquí hay un ejemplo.
#include
char * fun_name (char * a) {
devolver a;
}
int main () {
char a [10] = “hola”;
char * b;
b = nombre_funcional (a);
printf (“% s \ n”, b);
devuelve 0;
}
Espero que esto ayude. 🙂



Una cadena se define como una matriz de caracteres.

Definiendo una cadena así:
char str [100];

hace que el personaje cree espacio para la cadena por str es un puntero a esta ubicación. Puede ser más obvio al definir un literal:

char * str = “¡Hola, mundo! \ n”;

Y si se asigna dinámicamente:

char * str;
str = malloc (100 * sizeof (char));

En todos los casos, simplemente usa el nombre de la variable.


// Outputs a string to stdout and returns a substring starting
// at the second word
#include char *
myputs(char *str) {
char *s=NULL;
while(*str) {
if(!s && *str==' ')
s=str+1;
putchar(*str++);
}
return(s);
} main(int argc, char *argvc[])
{
char s[100] = {"This is my string to output on stdout\n"};
char *firstSpace=s; firstSpace=myputs(s); // Passed string in first call, return char *
while(firstSpace) {
firstSpace=myputs(firstSpace);
};
}


// Outputs a string to stdout and returns a substring starting
// at the second word
#include char *
myputs(char *str) {
char *s=NULL;
while(*str) {
if(!s && *str==' ')
s=str+1;
putchar(*str++);
}
return(s);
} main(int argc, char *argvc[])
{
char s[100] = {"This is my string to output on stdout\n"};
char *firstSpace=s; firstSpace=myputs(s); // Passed string in first call, return char *
while(firstSpace) {
firstSpace=myputs(firstSpace);
};
}


// Outputs a string to stdout and returns a substring starting
// at the second word
#include char *
myputs(char *str) {
char *s=NULL;
while(*str) {
if(!s && *str==' ')
s=str+1;
putchar(*str++);
}
return(s);
} main(int argc, char *argvc[])
{
char s[100] = {"This is my string to output on stdout\n"};
char *firstSpace=s; firstSpace=myputs(s); // Passed string in first call, return char *
while(firstSpace) {
firstSpace=myputs(firstSpace);
};
}


// Outputs a string to stdout and returns a substring starting
// at the second word
#include char *
myputs(char *str) {
char *s=NULL;
while(*str) {
if(!s && *str==' ')
s=str+1;
putchar(*str++);
}
return(s);
} main(int argc, char *argvc[])
{
char s[100] = {"This is my string to output on stdout\n"};
char *firstSpace=s; firstSpace=myputs(s); // Passed string in first call, return char *
while(firstSpace) {
firstSpace=myputs(firstSpace);
};
}

String method_name (variable de cadena _name) {

Declaración (es);

Cadena s = “hola”;

Devoluciones;

}

Aquí, el tipo de datos de retorno al que nos referimos es string, por lo que estamos escribiendo String delante del nombre del método Y, como queremos pasar el tipo de datos de cadena, estamos escribiendo String entre el par de paréntesis ()

Consulte su libro de texto sobre codificación, cualquier libro de texto, en realidad.

#HomeworkFail

Pase una cadena como puntero a su elemento cero. Devuelve una cadena como puntero a su elemento cero. Deje que la función de llamada descubra qué sucede si devuelve un puntero nulo.

debe tomar la matriz de caracteres y solo así podrá editarlos y modificarlos según sus necesidades.

Como en C veces no teníamos ningún concepto de cadena, los caracteres se usaban en su lugar.