Han Solo
2003-08-25 10:39:58 UTC
Hola a todos de nuevo.
Pues eso, sigo con la guerra de punteros a char. Supongamos lo
siguiente
#include <stdio.h>
#include <stdlib.h>
int main (void){
char aux[80];
char **nom_fich_mod_E;
FILE f_datos;
int nmat,i;
f_datos=fopen("datos.dat","r");
fscanf(f_datos,"%s",aux);
nmat=atoi(aux);
nom_fich_mod_E=(char **)malloc(nmat*sizeof(**nom_fich_mod_E));
for (i=0;i<nmat;i++){
fscanf(f_datos,"%s",aux);
nom_fich_mod_E[i]=(char *)calloc(1,strlen(aux));
strcpy(nom_fich_mod_E[i],aux);
}
fclose(f_datos);
}
Siendo datos.dat:
2
aaaaaa
bbbbbbbbb
El caso es que iba a poner que no funciona, pero he probado a
compilarlo y no da errores. Ejecuntándolo con el depurador, veo que
asigna los punteros correctamente. El caso es que algo parecido que
tengo no funciona. Sólo reserva memoria para un elemento, con
lo que en el segundo bucle pega un segfault. Lo que no acabo de ver es
por qué (aunque en algún momemto llegó a funcionar; pura chiripa,
supongo...). He escrito esto copiando y pegando, así que debe haber
algún error de concepto que el programa "grande" no cuela.
Gracias a todos.
Un Saludo
- --
Han Solo
The Rebel Alliance
Emacs is not on every system
So what? [...] Do you tell your administrative people to stick with
notepad.exe? Do you tell your fat kids they can only have the crummy
games that come with their video games or plain dress that comes with
Barbie?
Pues eso, sigo con la guerra de punteros a char. Supongamos lo
siguiente
#include <stdio.h>
#include <stdlib.h>
int main (void){
char aux[80];
char **nom_fich_mod_E;
FILE f_datos;
int nmat,i;
f_datos=fopen("datos.dat","r");
fscanf(f_datos,"%s",aux);
nmat=atoi(aux);
nom_fich_mod_E=(char **)malloc(nmat*sizeof(**nom_fich_mod_E));
for (i=0;i<nmat;i++){
fscanf(f_datos,"%s",aux);
nom_fich_mod_E[i]=(char *)calloc(1,strlen(aux));
strcpy(nom_fich_mod_E[i],aux);
}
fclose(f_datos);
}
Siendo datos.dat:
2
aaaaaa
bbbbbbbbb
El caso es que iba a poner que no funciona, pero he probado a
compilarlo y no da errores. Ejecuntándolo con el depurador, veo que
asigna los punteros correctamente. El caso es que algo parecido que
tengo no funciona. Sólo reserva memoria para un elemento, con
lo que en el segundo bucle pega un segfault. Lo que no acabo de ver es
por qué (aunque en algún momemto llegó a funcionar; pura chiripa,
supongo...). He escrito esto copiando y pegando, así que debe haber
algún error de concepto que el programa "grande" no cuela.
Gracias a todos.
Un Saludo
- --
Han Solo
The Rebel Alliance
Emacs is not on every system
So what? [...] Do you tell your administrative people to stick with
notepad.exe? Do you tell your fat kids they can only have the crummy
games that come with their video games or plain dress that comes with
Barbie?