Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/02/2012, 12:00
cesar_casla
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Función que recoja una cadena y regrese una cadena

Hola Dtc! tenes varios problemas con el manejo de cadenas pero con practica todo se corrige. Para que una funcion regrese una cadena es como haces en el segundo caso
Código C:
Ver original
  1. char *limpiar (char cadena[200])
Y para devolver una cadena en el return tenes que hacer return variable(que es la direccion de inicio del arreglo) y noo! return variable[200], de esta manera solo estas devolviendo lo que se encuentra en la posicion 200 del arreglo

Pero! si vos creas un arreglo en una funcion y queres devolver dicho arreglo vas a tener un error ya que ese arreglo es local a la funcion y cuando la funcion termine ese arreglo ya no va existir mas. En este caso para retornar una cadena tiene que ser el mismo arreglo pasado a la funcion, osea return cadena;

Otra cosa, si vos declaras
Código C:
Ver original
  1. char *arreglo[200];
lo que estas haciendo es declarar un arreglo de punteros a char, donde cada posicion del arreglo es un puntero a una cadena.
Otro error es hacer
Código C:
Ver original
  1. gorro[200] = limpiar(manto);
Supongo que queres hacer: es asignar en el arreglo gorro el arreglo devuelto de la funcion limpiar, lo que esta mal. Para copiar un arreglo a otro tenes que usar la funcion strcpy de la libreria string.h

Pasando en limpio seria:
Código C:
Ver original
  1. #include <stdio.h>
  2.     #include <stdlib.h>
  3.     #include <string.h>
  4.      
  5.     char manto[200];
  6.     char gorro[200];
  7.     char *limpiar (char cadena[200]);
  8.      
  9.     int main()
  10.     {
  11.     fgets(manto,200, stdin);
  12.     strcpy(gorro, limpiar(manto)); // llama a la funcion limpiar y el retorno se lo copia a gorro
  13.     printf("\nEs: %s, listo", gorro);
  14.     getch();
  15.      
  16.     return 0;
  17.     }
  18.      
  19.      
  20.     char *limpiar (char cadena[200])
  21.     {
  22.      
  23.      ACA PROCESA EL ARREGLO CADENA[200]
  24.  
  25.     return cadena; // retorna cadena
  26.     }

Espero te sirva, saludos