Autor
|
Tema: fwrite y estructuras (Leído 6,400 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos si tengo la siguiente estructura en la que tengo campos de tipo cadena y campos de tipo entero, cual es la manera para poder escribirlos en un archivo utilizando a fuerzas la funcion fwrite()?? typedef struct { char nombre[MAX]; int edad; char ciudad_residencia[MAX]; }Persona;
el problema que tengo es con el campo int me imprime basura a la hora de escribir en el archivo: int main() { FILE *fd; Persona p; agregarDatos(&p); if((fd = fopen("F:\\gente.txt","w"))!=NULL ) { fwrite(&p. edad,sizeof(int),1,fd );// aqui esta el error fwrite(p. ciudad_residencia,sizeof(char),strlen(p. ciudad_residencia),fd ); } else printf("No se pudo crear archivo\n"); return 0; }
tengo entendido que con el fprintf me puedo quitar de problemas, pero tengo que usar a fuerzas el fwrite de antemano gracias
|
|
|
En línea
|
|
|
|
walrus10
Desconectado
Mensajes: 1
|
Mira hace mucho que no programo en ese lenguaje pero creo que tenes que hacer un solo fwrite y con sizeof(Persona), porque de lo que se trata es que el struct es de tipo persona y lo que tenes que escribir en el archivo es una serie de personas si no me equivoco.
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
si tengo la siguiente estructura en la que tengo campos de tipo cadena y campos de tipo entero, cual es la manera para poder escribirlos en un archivo utilizando a fuerzas la funcion fwrite()? Como ya te comentaron debes imprimir utilizando una sola llamada a fwrite:
el problema que tengo es con el campo int me imprime basura a la hora de escribir en el archivo Si con ello te refieres a que el contenido del archivo es ilegible eso es normal ya que la función fwrite escribe un bloque de memoria tal cual, si lo que quieres es texto plano debes utilizar fprintf. Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
gracias por sus respuestas, el programa me dice: Crear un “struct” que almacene los siguientes datos de una persona: nombre, edad, ciudad de residencia. Pedir al usuario esos datos de una persona y guardarlos en un fichero llamado “gente.dat”, usando “fwrite”. Cerrar el fichero, volverlo a abrir para lectura y mostrar los datos que se habían guardado, que se deben leer con “fread”. ya entendi como usar el fwrite para escribir en el archivo.dat, pero ahora el problema que tengo es con el fread() que me tiene que recibir los datos leidos del stream y almacenarlos en un buffer o una estructura, pero me aparece basura todavia #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 35 #define TAM 50 /* Crear un “struct” que almacene los siguientes datos de una persona: nombre, edad, ciudad de residencia. Pedir al usuario esos datos de una persona y guardarlos en un fichero llamado “gente.dat”, usando “fwrite”. Cerrar el fichero, volverlo a abrir para lectura y mostrar los datos que se habían guardado, que se deben leer con “fread”. */ typedef struct { char nombre[MAX]; int edad; char ciudad_residencia[MAX]; }Persona; void agregarDatos(Persona *p); int main() { FILE *fd,*ap; Persona p,persona; agregarDatos(&p); if((fd = fopen("F:\\gente.dat","w"))!=NULL ) { if((ap = fopen("F:\\gente.dat","r"))!=NULL ) { fread(&persona ,sizeof(p ),1,ap ); printf("%s",persona. ciudad_residencia); } } else printf("No se pudo crear archivo\n"); return 0; } void agregarDatos(Persona *p) { char buffer[MAX]; fgets(p ->nombre ,MAX ,stdin ); printf("Dame ciudad de residencia: "); fgets(p ->ciudad_residencia ,MAX ,stdin ); }
gracias
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
pero ahora el problema que tengo es con el fread() que me tiene que recibir los datos leidos del stream y almacenarlos en un buffer o una estructura, pero me aparece basura todavia El programa funciona correctamente, ¿A que te refieres con "basura"? Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problemas con fwrite()
PHP
|
eLank0
|
2
|
2,090
|
17 Enero 2007, 01:57 am
por eLank0
|
|
|
Problema Fwrite
Programación C/C++
|
kristian_5
|
2
|
2,698
|
12 Junio 2013, 11:08 am
por aguml
|
|
|
Problemas con fwrite
Programación C/C++
|
juan228
|
5
|
2,100
|
5 Mayo 2015, 20:16 pm
por engel lex
|
|
|
fwrite Estructuras
Programación C/C++
|
pozo_23
|
1
|
1,723
|
4 Enero 2017, 11:34 am
por MAFUS
|
|
|
ayuda con uso de fwrite actualizar fichero en c
Programación C/C++
|
adriana13
|
2
|
1,812
|
19 Octubre 2018, 21:36 pm
por adriana13
|
|