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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  sustituir scanf
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: sustituir scanf  (Leído 7,107 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Re: sustituir scanf
« Respuesta #10 en: 17 Octubre 2013, 17:10 pm »

Saludos

ya le puse que me escribiera con los fwrite, uno para cada campo porque no queria escribir bytes de mas, pero en el segundo fwrite() no me imprime el numero correcto, no se si es porque fwrite el primer argumento tiene que ser una cadena o arreglo

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX 20
  5. /*
  6.    Crear un “struct” que almacene los siguientes datos de una persona: nombre, edad, ciudad de residencia.
  7.    Pedir al usuario esos datos de una persona y guardarlos en un fichero llamado “gente.dat”, cerrar el fichero,
  8.    volverlo a abrir para lectura y mostrar los datos que se habían guardado.
  9. */
  10. typedef struct datos
  11. {
  12.    char nombre[MAX];
  13.    int edad;
  14.    char ciudad_residencia[MAX];
  15. }Persona;
  16.  
  17. void entrada(Persona *p);
  18. void mostrar(FILE *ap);
  19.  
  20. int main()
  21. {
  22.    FILE *fd,*ap;
  23.    Persona p;
  24.    if((fd = fopen("F:\\gente.txt","w"))!= NULL)
  25.    {
  26.        entrada(&p);
  27.        fwrite(p.nombre,sizeof(char),strlen(p.nombre),fd);
  28.        fwrite(&p.edad,sizeof(int),1,fd);
  29.        fwrite(p.ciudad_residencia,sizeof(char),strlen(p.ciudad_residencia),fd);
  30.        fclose(fd);
  31.        if((ap = fopen("F:\\gente.txt","r"))!= NULL);
  32.           mostrar(ap);
  33.    }
  34.    else
  35.       printf("No se pudo crear archivo");
  36.    return 0;
  37. }
  38.  
  39. void entrada(Persona *p)
  40. {
  41.    char cad[10];
  42.    printf("Dame nombre:\n");
  43.    fgets(p->nombre,MAX,stdin);
  44.    printf("Dame edad:\n");
  45.    fgets(cad,10,stdin);
  46.    sscanf(cad,"%d",&p->edad);
  47.    printf("Dame ciudad de residencia:\n");
  48.    fgets(p->ciudad_residencia,MAX,stdin);
  49.    system("cls");
  50. }
  51.  
  52. void mostrar(FILE *ap)
  53. {
  54.    int car;
  55.    while((car = fgetc(ap))!= EOF)
  56.       printf("%c",car);
  57. }
  58.  

disculpa que haga tantas preguntas, pero es que apenas estoy empezando a familiarizarme con archivos, gracias


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: sustituir scanf
« Respuesta #11 en: 17 Octubre 2013, 17:59 pm »

Revisa la documentacion de todas las funciones que usas, especilamente fopen. No podes esperar que printf("%c",car); funcione, escribiste un int con la dead, no un caracter.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con scanf
Programación C/C++
Caster 3 4,213 Último mensaje 29 Septiembre 2012, 13:01 pm
por Caster
Pregunta de C scanf
Programación C/C++
g0rg3d3l4s3lv4 3 2,722 Último mensaje 15 Marzo 2013, 04:21 am
por g0rg3d3l4s3lv4
scanf y gets « 1 2 »
Programación C/C++
m@o_614 16 8,370 Último mensaje 21 Julio 2013, 19:29 pm
por rir3760
[C] Comparación entre el gets y el scanf « 1 2 »
Programación C/C++
niñoAtómico 12 6,360 Último mensaje 12 Octubre 2013, 23:24 pm
por vangodp
Ayuda con el scanf n el for
Programación C/C++
Jorge LuissxX 2 1,658 Último mensaje 18 Mayo 2019, 02:07 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines