C/Visual C - Como funciona fwrite y fread

 
Vista:
sin imagen de perfil
Val: 185
Bronce
Ha aumentado 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Como funciona fwrite y fread

Publicado por carlos (95 intervenciones) el 01/04/2018 00:51:53
He echo un ejercicio de estructuras con archivos fprintf scanf fgets,etc

Ahora toca el fwrite y fread, pero tengo un problema y es que me guarda las frases pero no numeros, eso a que se debe.Probe un ejemplo de copiar archivos y parecia funcionar pero empeze de 0 y solo teclea las letras y no numeros, probe con una variable ya almacenada pero tampoco lo escribe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct persona{
	int edad=32;
	char nombre[20];
	char residencia[40];
};
 
int main(){
	char x[3];
	int eleccion;
	printf("¿Que deseas?\n");
	printf("1-Ingresar dato con fwrite\n");
	printf("2- LEER dato con fread\n");
	struct persona personas;
gets(x);
sscanf(x,"%d",&eleccion);
printf("%d",eleccion);
	FILE* archivo;
switch (eleccion)
 
case 1:
 
	archivo = fopen("gente.dat","wb");
	if(archivo == NULL){
		printf("No se ha detectado archivo");
		return 0;
	}
	scanf("%s",&personas.nombre);
	printf("nombre:%s",personas.nombre);
		scanf("%s",&personas.residencia);
	printf("residencia:%s",personas.residencia);
	fwrite(&personas.nombre,sizeof(personas.nombre),1,archivo);
		fwrite(&personas.edad,sizeof(personas.edad,1,archivo);
			fwrite(&personas.residencia,sizeof(personas.residencia),1,archivo);
	fclose(archivo);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 185
Bronce
Ha aumentado 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Como funciona fwrite y fread

Publicado por carlos (95 intervenciones) el 01/04/2018 12:29:19
Eso no resuelve mi duda, me dice como funciona y tal( como en el libro) los parametros a pasar, pero sigo en las mismas
fwrite (buffer , sizeof(char), sizeof(buffer), pFile)
donde lo lee,tamaño,Cantidad de datos,archivo

Sigo en las mismas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como funciona fwrite y fread

Publicado por Tom (619 intervenciones) el 01/04/2018 17:27:49
No resuleve tu duda porque no lees, o no te fijas en lo que lees.
Mira de nuevo el ejemplo de esa página (sí, te dice cómo funciona, que es lo que preguntas en el título de tu post) y compáralo con tu código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 185
Bronce
Ha aumentado 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Como funciona fwrite y fread

Publicado por carlos (95 intervenciones) el 01/04/2018 19:04:09
Lo he mirado varias veces, al final he mirado un video y el problema era que apuntaba dentro de una variable de la estructura y lo cogia mal, al menos es lo que entendi.Lo tengo borroso pero a saber, tampoco es que sepa mucho ingles.

Al final he cambiado esto:
1
2
3
4
5
6
7
8
scanf("%s",&personas.nombre);
	printf("nombre:%s",personas.nombre);
		scanf("%s",&personas.residencia);
	printf("residencia:%s",personas.residencia);
	fwrite(&personas.nombre,sizeof(personas.nombre),1,archivo);
		fwrite(&personas.edad,sizeof(personas.edad,1,archivo);
			fwrite(&personas.residencia,sizeof(personas.residencia),1,archivo);
	fclose(archivo);
por esto:
1
2
3
4
5
6
7
8
printf("nombre\n");
	scanf("%s",&personas.nombre);
	printf("residencia\n");
		scanf("%s",&personas.residencia);
	printf("edad\n");
			scanf("%d",&personas.edad);
	fwrite(&personas,sizeof(personas),1,archivo);
	fclose(archivo);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Como funciona fwrite y fread

Publicado por Tom (619 intervenciones) el 02/04/2018 11:11:58
Bueno, pero el ejemplo estaba claro (copio y pego):

1
2
3
4
5
6
7
8
9
10
11
12
/* fwrite example : write buffer */
#include <stdio.h>
 
int main ()
{
  FILE * pFile;
  char buffer[] = { 'x' , 'y' , 'z' };
  pFile = fopen ("myfile.bin", "wb");
  fwrite (buffer , sizeof(char), sizeof(buffer), pFile);
  fclose (pFile);
  return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar