elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  fwrite Estructuras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: fwrite Estructuras  (Leído 1,725 veces)
pozo_23

Desconectado Desconectado

Mensajes: 8


Ver Perfil
fwrite Estructuras
« en: 4 Enero 2017, 09:59 am »

Hola, estoy intentando escribir en un archivo de texto datos con la siguiente funcion:

Código
  1.  
  2. void insertarDatos(FILE *Fichero,tipoAlumno alumno[NALUMNOS],int contador,int vectorAsig[NALUMNOS]){
  3.  
  4.    int i;
  5.    int j;
  6.    Fichero=fopen("fichero.txt","w+");
  7.  
  8.    if(Fichero==NULL){
  9.        printf("\nFichero no existe!\nPor favor creelo");
  10.  
  11.        return;
  12.    }
  13.  
  14.    for(i=0;i<contador;i++){
  15.  
  16.        fwrite(alumno[i].nombre,sizeof(char),sizeof(alumno.nombre),Fichero);
  17.        fwrite(alumno[i].identificador,sizeof(char),sizeof(alumno.identificador),Fichero);
  18.        fwrite(alumno[i].curso,sizeof(int),1,Fichero);
  19.  
  20.    }
  21.    fclose(Fichero);
  22.  
  23. }
  24.  
  25.  

El caso es que, al usar fwrite las dos primeras lineas, con datos de tipo char, no hay ningun problema, y en el fichero se me guardan los datos, pero cuando llega al fwrite donde hay un entero, al compilar me da el warning:

warning: passing argument 1 of 'fwrite' makes pointer from integer without a cast [-Wint-conversion]

y no se muy bien lo que quiere decir. He intentado probar con la linea:
Código
  1.  
  2. fwrite(&alumno[i].curso,sizeof(int),1,Fichero);
  3.  


pero me escribe caracteres aleatorios en el fichero. ¿Podrían ayudarme? Gracias


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: fwrite Estructuras
« Respuesta #1 en: 4 Enero 2017, 11:34 am »

No estás generando un archivo de texto sino un archivo binario. Por esa razón al escribir el número el ordenador lo hace de forma binaria y cuando intentas leerlo ves cosas raras, el ordenador toma el número literal de la memoria y lo intenta convertir en caracteres ASCII o como sea que decodifique el visualizador que usas.

Genera un archivo de texto con "w+t" en la llamada a fopen.
Usa fputs, fprintf o cualquier otra función dedicada a escribir en formato texto para darle los datos al archivo.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas con fwrite()
PHP
eLank0 2 2,091 Último mensaje 17 Enero 2007, 01:57 am
por eLank0
no me deja utilizar fwrite
PHP
CICOLO_111234 2 2,306 Último mensaje 23 Abril 2009, 18:20 pm
por дٳŦ٭
Problema Fwrite
Programación C/C++
kristian_5 2 2,699 Último mensaje 12 Junio 2013, 11:08 am
por aguml
fwrite y estructuras
Programación C/C++
m@o_614 4 6,402 Último mensaje 6 Noviembre 2013, 02:33 am
por rir3760
Problemas con fwrite
Programación C/C++
juan228 5 2,104 Último mensaje 5 Mayo 2015, 20:16 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines