Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/11/2010, 03:19
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 7 meses
Puntos: 73
Respuesta: Puñeteros Punteros y Strings en C

En la función main has definido

char* arrayL[12];

Según esto, arrayL es un array de 12 punteros a char.

En la llamada a procesarCadena estás pasando arrayL[0], lo que concuerda con el prototipo. Correcto.

Una vez dentro de la función, lo que has pasado como arrayL[0] pasa a ser cadena[]. A continuación trabajas con los elementos individuales de cadena[]. Correcto.

Lo que se te ha pasado por alto es lo siguiente:

Los punteros de arrayL no se han inicializado a valor alguno. En la llamada a procesarCadena estás, por lo tanto, pasando un puntero que no sabes a dónde apunta. El programa (bueno, la corrección hecha por sam90) compilaría bien (no habría errores de cara al compilador), pero al ejecutarlo te encontrarás, seguro, con un comportamiento errático y, casi seguro, con un error tipo Segmentation Fault o similar.

Parece que lo que querías poner es

char arrayL[12];

y luego, claro está, meter algún valor en arrayL antes de llamar a procesarCadena.

Si lo que querías es un array de cadenas, la declaración inicial sería correcta, pero después tendrías que reservar espacio para cada una de esas cadenas e inicializarlas a algún valor. O bien, declarar un array de dos dimensiones:

char arrayL[12][30]

y tendrías 12 arrays de 30 caracteres.

Por demás, las variables están bien pasadas. El nombre de un array es un puntero a su primer elemento.

Por cierto, que al pasar parámetros te da lo mismo poner

<tipo> *nombre;

que poner

<tipo> nombre[].

Por cierto, al pasar un array como parámetro, la función que lo recibe no tendrá información sobre el tamaño del array.