Estructuras con Punteros

Iniciado por jgonzalezo, 13 Abril 2015, 04:34 AM

0 Miembros y 1 Visitante están viendo este tema.

jgonzalezo

Hola quisiera saber si alguien podria guiarme con esta duda tengo una estructura

typedef struct configParam
{
char *clave;
char *valor;
}configParam;

que la debo utilizar en esta funcion

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

eferion

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 (cpp) [Seleccionar]

// Para escribir
strcpy( paramsToWrite[contador].clave, "aqui la clave" );

// Para leer
char* cad;
strcpy( cad, paramsToWrite[contador].clave );


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

Un saludo.