Coger datos de una sección concreta del archivo
Publicado por carlos (95 intervenciones) el 27/07/2020 21:27:30
Estoy rehaciendo unos ejercicios practicos el problema es que vi que los ejercicios se me borraron asi que total me puse otra vez para acordarme,el problema es que hay ejercicios que no logro resolver
Me he quedado en este ya que me da error y no se que hacer
Me da error de estructura en los ultimos printf pero es que no se que poner ya que en los ejercicios anteriores que no usaba fseek y ftell, no me daban ese problema y si hago Persona[contador].nombre,¿entonces de que sirve el fseek en este ejercicio?
Me he quedado en este ya que me da error y no se que hacer
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*EJERCICIO 6.9.1
Ampliar el programa anterior(el array de structs con 10 personas) para que el dato
que indique el usuario se lea sin leer descartar antes los que le preceden,sino que
se salte directamente a la ficha deseada usando "fseek"*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct{
char nombre[15];
int edad;
char residencia[40];
}Persona[10];
int main(){
FILE* archivo;
int contador=0;
char textoT[5];
int valorFicha;
int posicion;
if((archivo=fopen("gente.dat","wt"))==NULL){
printf("Tio esto no existe");
exit(1);
}
for (contador=0;contador<10;contador++){
printf("Introduzca nombre");
gets(Persona[contador].nombre);
fwrite(Persona[contador].nombre,sizeof(Persona[contador].nombre),1,archivo);
if(strcmp(Persona[contador].nombre,"")==0){
printf("Saliendo");
break;
}
printf("Introduzca numero");
gets(textoT);
sscanf(textoT,"%d",&Persona[contador].edad);
fwrite(&Persona[contador].edad,sizeof(Persona[contador].edad),1,archivo);
printf("Introduzca Residencia");
gets(Persona[contador].residencia);
fwrite(Persona[contador].residencia,sizeof(Persona[contador].residencia),1,archivo);
}
fclose(archivo);
//////////////////////////////////////////////////
printf("Abriendo modo lectura\n");
if((archivo=fopen("gente.dat","rt"))==NULL){
printf("Archivo no encontrado");
}
printf("Introduzca el numero de persona que quieres saber informacion");
gets(textoT);
sscanf(textoT,"%d",&contador);
contador--;
valorFicha=sizeof(Persona)*contador;
fseek(archivo,valorFicha,SEEK_SET);
posicion=ftell(archivo);
fread(&Persona,sizeof(Persona),1,archivo);
printf("Posicion: %d\n",posicion);
printf("Nombre: %s\n",Persona.nombre);
printf("Posicion: %d\n",posicion);
printf("Edad: %d\n",Persona.edad);
printf("Posicion: %d\n",posicion);
printf("Residencia: %s\n",Persona.residencia);
}
Valora esta pregunta


0