[C con Clase] Array de cadenas de caracteres y paso de parámetros en C.

Rolando Kindelan Nuñez rkindelan en uci.cu
Vie Dic 5 19:01:02 CET 2008


Te pedí el código de la función que devolvía la cadena, porque lo que pones char (*pszCadena)[10] no es un puntero a char normal, es un puntero a un arreglo char de 10 elementos, y esto trae como problema que debes asignarle exactamente la dirección de un arreglo char de 10 elementos, si no le asignas exactamente eso te da un error, similar al que tenias en el otro correo, por eso quería ver de qué tipo era la cadena que devolvías porque tiene que ser exactamente un char[10].
Espero que eso te aclare un poco.






Ing. Rolando Kindelan Nuñez
Universidad de las Ciencias Informáticas
-------------------------------------------------------------------
"Pensar en el futuro, hace el presente más complicado."  (by rolo...)





-----Original Message-----
From: cconclase-bounces en listas.conclase.net [mailto:cconclase-bounces en listas.conclase.net] On Behalf Of gmh2000
Sent: Friday, December 05, 2008 11:38 AM
To: cconclase en listas.conclase.net
Subject: Re: [C con Clase] Array de cadenas de caracteres y paso de parámetros en C.

Hola. Aclaro que los nombres de las funciones y variables NO son las de mi programa. He puesto esos nombres para que lo entedais mejor y que pueda servir para todo el mundo. ¿No es eso lo que se pretende en esta web?

Bien. No existe tal función. En realidad es una cadena de un registro desde donde hago la asignación. Sin más ahí van los trozos de código:

NOTA: he puesto una florecita donde el compilador da el error. Donde pone "error" no da problemas. Eso es para tratar las excepciones en otro momento.



struct strings_list
{
  char (*string_pointers)[40];
  unsigned int number_of_strings;
};

struct strings_list file_names;

void get_file_names(const char *directory, struct strings_list *file_names)
{
	struct dirent *d;
	struct stat buf;
	DIR *dir;	
	file_names->number_of_strings = 0;
	if ((dir=opendir(directory)) == NULL)
	{
		/* error */
	}
	 
	while ((d=readdir(dir)) != NULL)
	{	
		/* The above line avoid infinite loop */
		if (strcmp(d->d_name,".")!=0 && strcmp(d->d_name, "..")!=0) 
		{
		  file_names->string_pointers = d->d_name; /*@->-*/	
		  if (stat(file_names->string_pointers, &buf) == -1) /*@->-*/
		  {
			/* error */
		  }
		  file_names->number_of_strings++;
		  file_names->string_pointers++;
		}
	}
	closedir(dir);	
}



Puedo poner el código completo si quereis, pero creo que todo quedaría menos claro. Pero si lo preferís no teneis más que decírmelo.

Agradezco mucho las respuestas. Muy buen día ;)
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


Más información sobre la lista de distribución Cconclase