Standard I / O streams.... fopen fprintf fscanf fclose

  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Registrado: Feb 28, 2003
  • Mensajes: 52
  • Status: Offline

Nota Marzo 19th, 2003, 12:54 am

PPL ¡Hola!

Tengo un pequeño problema de lectura de datos desde el archivo de...sólo un pequeño problema, pero creo que realmente sé por dónde empezar arreglarlo
Lo utilizo para escribir en un archivo
Código: [ Select ]
void Send_field1(filename, field)
char *filename;
FIELD2N *field;
{
INDEX i;
FILE *fptr;
if ((fptr = fopen(filename, "a")) == NULL)
printf("Error opening file\n");
printf("before printing\n");
SUMLOOP(i) fprintf(fptr, "%8x ", field->e[i]);
if (fclose(fptr) == EOF)
printf("Error closing file\n");
}
  1. void Send_field1(filename, field)
  2. char *filename;
  3. FIELD2N *field;
  4. {
  5. INDEX i;
  6. FILE *fptr;
  7. if ((fptr = fopen(filename, "a")) == NULL)
  8. printf("Error opening file\n");
  9. printf("before printing\n");
  10. SUMLOOP(i) fprintf(fptr, "%8x ", field->e[i]);
  11. if (fclose(fptr) == EOF)
  12. printf("Error closing file\n");
  13. }

donde SUMLOOP es un bucle desde i = 0 el número de entradas en la matriz, no se preocupe de que uno, de su limpieza. gif "alt =": wink: "title =" Wink "/>

y escribí sth en el archivo, sí prefectly multa y lo abrí y ver esto
Código: [ Select ]
  547d baf7930d 3c21e169 a860ceee   547d baf7930d 3c21e169 a860ceee

Sí hexademcial...
y escribí esto para leer de nuevo
Código: [ Select ]
void Receive_field1(filename, field)
char *filename;
FIELD2N *field;
{
INDEX i;
FILE *fptr;
if ((fptr = fopen(filename, "r")) == NULL)
printf("Error opening file\n");
printf("before reading\n");
SUMLOOP(i) {fscanf(fptr, "%8x ", &field->e[i]); printf("field->e[i] %8x\n", &field->e[i]);}
if (fclose(fptr) == EOF)
printf("Error closing file\n");
}
  1. void Receive_field1(filename, field)
  2. char *filename;
  3. FIELD2N *field;
  4. {
  5. INDEX i;
  6. FILE *fptr;
  7. if ((fptr = fopen(filename, "r")) == NULL)
  8. printf("Error opening file\n");
  9. printf("before reading\n");
  10. SUMLOOP(i) {fscanf(fptr, "%8x ", &field->e[i]); printf("field->e[i] %8x\n", &field->e[i]);}
  11. if (fclose(fptr) == EOF)
  12. printf("Error closing file\n");
  13. }


u can see Traté de imprimir lo que tengo.... y todo lo que tengo es esta......
Código: [ Select ]
field->e[i] 241ff00
field->e[i] 241ff04
field->e[i] 241ff08
field->e[i] 241ff0c
  1. field->e[i] 241ff00
  2. field->e[i] 241ff04
  3. field->e[i] 241ff08
  4. field->e[i] 241ff0c


Alguien sabe ¿Qué pasa aquí? 8O
Thanz!! :D
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Marzo 19th, 2003, 12:54 am

  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8926
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Marzo 19th, 2003, 3:31 am

No estoy seguro de lo que está pasando todavía, pero se dan cuenta de que

Código: [ Select ]
field->e[i] 241ff00
field->e[i] 241ff04
field->e[i] 241ff08
field->e[i] 241ff0c
  1. field->e[i] 241ff00
  2. field->e[i] 241ff04
  3. field->e[i] 241ff08
  4. field->e[i] 241ff0c

está aumentando cada vez exactamente por 0x4
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Registrado: Feb 28, 2003
  • Mensajes: 52
  • Status: Offline

Nota Marzo 19th, 2003, 4:10 am

O Hey! buen punto!
tan..... esta es.... simplemente una dirección o qué?
mis códigos r difícil de entender ¿no? haha
pero i don't know realmente dónde está el problema..... su justa una smiple fscanf...:shock:
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Registrado: Feb 28, 2003
  • Mensajes: 52
  • Status: Offline

Nota Marzo 19th, 2003, 4:13 am

OK ahora me sale este
Código: [ Select ]
field->e[i] 77c39348
field->e[i]  223b20
field->e[i]  223b08
field->e[i]    8
  1. field->e[i] 77c39348
  2. field->e[i]  223b20
  3. field->e[i]  223b08
  4. field->e[i]    8

y después de cambiar el campo a coz y campo es simplemente la dirección de...pero aún así los datos leídos desde el archivo no es el mismo que escribir en él
lo que está mal aquí? :shock:
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Registrado: Feb 28, 2003
  • Mensajes: 52
  • Status: Offline

Nota Marzo 19th, 2003, 6:21 am

o...Creo que didnlt hacer hehe muy claro
realmente quiero una matriz con cuatro entradas a la entrada de los datos leídos de la Feil
por lo que la matriz con que la primera entrada como
Código: [ Select ]
547d

el segundo es
Código: [ Select ]
baf7930d
el tercero
Código: [ Select ]
3c21e169
y el último de los cuales
Código: [ Select ]
a860ceee


El número de entradas varían, así que realmente no se puede definir....
tan........ alguna idea?
Thanz!! :D
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Registrado: Feb 28, 2003
  • Mensajes: 52
  • Status: Offline

Nota Marzo 20th, 2003, 6:25 am

O.... Yo creo que puede ser debido a los problemas de puntero....
ok heres la nueva versión de las funciones, en realidad theyre sobre el mismo
la función de escritura es como esta
Código: [ Select ]
void Send_field1(filename, field)
char *filename;
FIELD2N *field;
{
INDEX i;
FILE *fptr;
if ((fptr = fopen(filename, "a")) == NULL)
printf("Error opening file\n");
printf("before printing\n");
SUMLOOP(i) fprintf(fptr, "%04x ", field->e[i]);
if (fclose(fptr) == EOF)
printf("Error closing file\n");
}
  1. void Send_field1(filename, field)
  2. char *filename;
  3. FIELD2N *field;
  4. {
  5. INDEX i;
  6. FILE *fptr;
  7. if ((fptr = fopen(filename, "a")) == NULL)
  8. printf("Error opening file\n");
  9. printf("before printing\n");
  10. SUMLOOP(i) fprintf(fptr, "%04x ", field->e[i]);
  11. if (fclose(fptr) == EOF)
  12. printf("Error closing file\n");
  13. }

y la parte de lectura es como esta
Código: [ Select ]
void Receive_field1(filename, field)
char *filename;
FIELD2N *field;
{
INDEX i;
FILE *fptr;
if ((fptr = fopen(filename, "r")) == NULL)
printf("Error opening file\n");
printf("before reading\n");
SUMLOOP(i) {fscanf(fptr, "%x ", &field->e[i]); printf("field->e[i] %04x\n", field->e[i]);}
if (fclose(fptr) == EOF)
printf("Error closing file\n");
}
  1. void Receive_field1(filename, field)
  2. char *filename;
  3. FIELD2N *field;
  4. {
  5. INDEX i;
  6. FILE *fptr;
  7. if ((fptr = fopen(filename, "r")) == NULL)
  8. printf("Error opening file\n");
  9. printf("before reading\n");
  10. SUMLOOP(i) {fscanf(fptr, "%x ", &field->e[i]); printf("field->e[i] %04x\n", field->e[i]);}
  11. if (fclose(fptr) == EOF)
  12. printf("Error closing file\n");
  13. }

Escribí sth en el archivo y la parte wriing está perfectamente bien como antes
Escribí
Código: [ Select ]
685 43c6fffc e02152ec 87fd5959

sí un poco desordenado, es un hexadecimal aleatorio

Pero cuando traté de ver cuál es la función readinf leer desde el archivo...Tengo este
Código: [ Select ]
77c39348  223b20  223b08    8

por lo que todavía no está leyendo lo correcto

Heres y algunas de las declaraciones que hice antes
Código: [ Select ]
typedef struct {
  ELEMENT  e[MAXLONG];
} FIELD2N;
  1. typedef struct {
  2.   ELEMENT  e[MAXLONG];
  3. } FIELD2N;

donde MAXLONG = 4
SUMLOOP y que se define como
Código: [ Select ]
#define SUMLOOP(i)  for(i=0; i<MAXLONG; i++)

simplemente una manera de definir el circuito que se frequenylt utilizados en el programa de :D

Así que nadie tiene ni idea de donde salió mal? :shock:
Thanz!! :D
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Registrado: Feb 28, 2003
  • Mensajes: 52
  • Status: Offline

Nota Marzo 20th, 2003, 10:06 am

O....... Aceptar hehe.........Creo que finalmente resuelto que.... Im y teribly siento...coz que se acaba de un error tipográfico del "nombre de archivo" que me puse. Así que sí u guyz no debe haber notado que coz no he puesto esa parte aquí..... me llevó mucho tiempo darse cuenta de que también

Thanz anywayz! :D

Publicar Información

  • Total de mensajes en este tema: 7 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 217 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC