Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jgonzalezo en 13 Abril 2015, 04:34 am



Título: Estructuras con Punteros
Publicado por: jgonzalezo en 13 Abril 2015, 04:34 am
Hola quisiera saber si alguien podria guiarme con esta duda tengo una estructura

Código:
typedef struct configParam
{
char *clave;
char *valor;
}configParam;
que la debo utilizar en esta funcion
 
Código:
void saveSettings(char fileName[], int *length, int *statusCode, struct configParam paramsToWrite[]){
char llave[100];
//creacion String llamado valor de tamaño 100
char valor[100];
int contador=0;
FILE *fichero;
fichero=fopen(fileName,"r");
while (( fscanf( fichero, "%s %s", &llave, &valor )) != EOF ) {

length=&contador;


}

del archivo leido tendre dos elementos uno llamado clave y el otro valor, y debo guardarlos en el arreglo struct configParam paramsToWrite[] que es del tipo estructura definido mas arriba, y q tiene tamaño de la cantidad de lineas del archivo que corresponden a la cantidad de estructuras que se deben crear, mi pregunta es como inserto los string clave y valor que voy teniendo de las lineas de los archivos en el arreglo, dado que la estructura que lo define son punteros a char


Título: Re: Estructuras con Punteros
Publicado por: eferion en 13 Abril 2015, 09:02 am
si "paramsToWrite" es un vector de elementos de tipo "struct configParam", queda claro que para acceder a cada elemento de tipo "configParam" necesitas usar el operador de indice:

"paramsToWrite[contador];"

Luego, para acceder a cada uno de los miembros de "configParam" tienes que usar el operador adeucado y el nombre del miembro con el que quieres interactuar. En el caso del operador se distinguen dos casos:

* Si el acceso es por valor, se usa el operador '.'
* Si el acceso es mediante punteros, se usa el operador '->'

Entonces, dado que "paramsToWrite" te da acceso a un elemento de tipo "configParam" por valor, el acceso quedaría tal que:

Código
  1. // Para escribir
  2. strcpy( paramsToWrite[contador].clave, "aqui la clave" );
  3.  
  4. // Para leer
  5. char* cad;
  6. strcpy( cad, paramsToWrite[contador].clave );

PD.: no te olvides de incrementar "contador" en cada iteración.

Un saludo.