Buenas, bueno, no he posteado codigo porque no lo he creído oportuno, aparte que son 1500 líneas de codigo... Creo que mi problema se entiende en el primer post, pero básicamente és, que en una función tengo una matriz declarada como char matriz[30][20], i tengo que recojerla en otra que está declarada char **matriz. Y como son distintos tipos de datos pues da el error.
De todas formas los trozos de codigo que creo son mas importantes son los siguientes:
MAIN:
int main(int argc,char **argv)
{
if (strcmp(argv[1],"--file")==0 || strcmp(argv[1],"-f")==0 && argc==3)
TrataFichero(argv[2]);
else
TrataParametros(argc,argv);
exit (EXIT_SUCCESS);
}//main
Función TrataParametros:
void TrataParametros(int fargc, char **fargv)//AQUI RECIBE LA DIRECCION DE LA MATRIZ, Y NO APUNTA A LA MATRIZ
{
.................................................................................//aqui habría mas codigo
while(1) //en el while trato los parametros con getopt_long()
{
opcio=getopt_long (fargc, fargv, opCurtes, opLlargues, NULL);
//llamada a getopt_long()AQUI ES DONDE DA LA VIOLACIÓN DE SEGMENTO .........................................//seguiría la función
Funcion TrataFichero:
void TrataFichero(char *fitxer)
{
unsigned int fargc,entra,i;
char s1[100];
char s2[4]=" \n\t";
char *ptr;
char fargv[30][20]; //DECLARACIÓN DE LA MATRIZ
if ((arxiu=fopen(fitxer,"r")) == NULL)
{
ErrorP('7',fitxer);
exit(EXIT_FAILURE);
}
else
{
strcpy(fargv[0],NOM);
mode=1;
while (!feof(arxiu))
{
fargc=1;
entra=0;
fgets(s1,100,arxiu);
ptr = strtok( s1, s2 );
if (ptr!=NULL)
{
strcpy(fargv[fargc],ptr);
while( (ptr = strtok( NULL, s2 )) != NULL )
{
entra=1;
fargc++;
strcpy(fargv[fargc],ptr);
}
fargc++;
if (entra==1)
TrataParametros(fargc,fargv); //AQUI ES DONDE PASO EL ARGUMENTO Y NO LO PUEDE LEER PORQUE LOS CONSIDERA DIFERENTES TIPOS DE DATOS
}
mode++;
}
fclose(arxiu);
}
}
Gracias y saludos!!