Direcciones de memoria

Iniciado por Maik33, 17 Octubre 2012, 14:31 PM

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

Maik33

Hola, tengo un problema con las direcciones de memoria en C. Tengo que guardar en un fichero varias direcciones de memoria, de enteros por ejemplo. Esto no me produce ningun problema. El problema lo tengo al intentar leerlos.

Este es el codigo de prueba:
#include <stdio.h>
#include <stdlib.h>

int main(){
  int n;
  int *p;
  FILE *f;
  n=10;
  f=fopen("mem.txt","w");
  fprintf(f,"%x",&n);
  fclose(f);
  f=fopen("mem.txt","r");
  fscanf(f,"%x",p);
  fclose(f);
}


compila bien pero al ejecutar me da violacion del segmento.

Tambien he intentado los mismo pero con arrays de char, y el mismo problema:

#include <stdio.h>
#include <stdlib.h>

int main(){
  int n;
  char mem[20];
  int *p;
  n=10;
  sfprintf(mem,"%x",&n);
  sscanf(mem,"%x",p);
}


Alguien sabe que hago mal, o como se hace?
He buscado en google pero todo lo que encontre es teoria sobre punteros que ya se (creo).
Gracias.

xiruko

c+especificadores+formato y busca por puntero o direccion de memoria, veras que el que se usa no es %x.

si despues de esto te sigue fallando comentalo y probaremos otra cosa.

un saludo!

Maik33

Ya habia probado esa manera

#include <stdio.h>
#include <stdlib.h>

int main(){
  int n;
  char mem[20];
  int *p;
  FILE *f;
  n=10;
  f=fopen("mem.txt","w");
  fprintf(f,"%p",&n);
  fclose(f);
  f=fopen("mem.txt","r");
  fscanf(f,"%p",p);
  fclose(f);
}


pero lo mismo, violacion del segmento.

xiruko

prueba asi:

#include <stdio.h>
#include <stdlib.h>

int main(){

int n, *p;
FILE *f;

n=10;
f=fopen("mem.txt","w");
fprintf(f,"%p",&n);
fclose(f);

f=fopen("mem.txt","r");
fscanf(f,"%p",&p); // aqui te faltaba el &
fclose(f);
printf("%d\n", *p); // aqui se imprime el numero 10

return 0;
}


un saludo!

Maik33

Gracias, ahora si.
Que fallo mas tonto.
Gracias por todo.