[SOLUCIONADO] Ayuda con Agenda en C

Iniciado por ReySolARG, Junio 04, 2011, 12:49:55 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Junio 04, 2011, 10:24:17 PM #20 Ultima modificación: Octubre 28, 2013, 08:23:02 AM por Expermicid
doble post es cuando pones dos seguido uno abajo del otro
Si queres añadir algo, apreta el boton modificar y lo agregas en uno mismo



Junio 04, 2011, 10:57:11 PM #22 Ultima modificación: Febrero 08, 2014, 05:15:49 PM por Expermicid
Empeza a separar las cosas en funciones

Código: c
void  leerArchivo ()
{
x=0;
rewind(v);
while(!feof(v))
{
                        fscanf (v,"%s",&con[x].nombre);
fscanf (v,"%s",&con[x].apellido);
fscanf (v,"%d",&con[x].edad);
fscanf (v,"%2d/%2d/%4d",&con[x].fn.dia,&con[x].fn.mes,&con[x].fn.ano);
fscanf (v,"%ld",&con[x].tel);
fscanf (v,"%ld",&con[x].dni);
fscanf (v,"%s",&con[x].correo);
}
}



Igual tenes muchas cosas mal, creas estructuras pero despues los valores los guardas independientemente
Si creas estructuras despues no las guardes con fprintf, guardalas con
fread(void *puntero, size_t tamaño, size_t nregistros, FILE *fichero); o fwrite

Código: c
// copia.c: Copia de ficheros
// Uso: copia <fichero_origen> <fichero_destino>

#include <stdio.h>

int main(int argc, char **argv) {
    FILE *fe, *fs;
    unsigned char buffer[2048]; // Buffer de 2 Kbytes
    int bytesLeidos;

    if(argc != 3) {
       printf("Usar: copia <fichero_origen> <fichero_destino>\n");
       return 1;
    }

    // Abrir el fichero de entrada en lectura y binario
    fe = fopen(argv[1], "rb");
    if(!fe) {
       printf("El fichero %s no existe o no puede ser abierto.\n", argv[1]);
       return 1;
    }
    // Crear o sobreescribir el fichero de salida en binario
    fs = fopen(argv[2], "wb");
    if(!fs) {
       printf("El fichero %s no puede ser creado.\n", argv[2]);
       fclose(fe);
       return 1;
    }
    // Bucle de copia:
    while((bytesLeidos = fread(buffer, 1, 2048, fe)))
       fwrite(buffer, 1, bytesLeidos, fs);
    // Cerrar ficheros:
    fclose(fe);
    fclose(fs);
    return 0;
}



Si vas a guardar las cosas de otra manera ni crees las estructuras

gracias ale!! ahi probe lo que me dijiste y me hace el mismo probema!!! cuando vuelvo a ejecutar el prog solo me muestra bien el nombre y el mail!!!

Abri el TXT y donde lo guardas y fijate si te lo guarda bien, para ver si es un error al leerlo o al escribirlo

no, lo guarda igual q me lo muestra!!!

Cambia los fscanf por los fread
y los fwrite por los fprintf

fwrite(&reg, sizeof(stRegistro), 1, fichero);

El primer parámetro es el registro
El segundo el tamaño del registro, con la funcion sizeof y entre los parentesis la estructura lo sabes
El tercero es la cantidad a escribir
El cuarto es el nombre del puntero al archivo

Dependiendo si queres escribir los nuevos datos siempre al final antes de agregar podes usar la funcion fseek



el primer paramtre es el regustro!! cual?? perdon se que es un a pregunta tonta pero a esta hora ya no me da mas!!!!!!!!

Y el nombre de la variable, en tu caso creo que es con

si ya lo hice pero me marca un error como que me falta un parentesis  dentro de la funcion fread!!! y no me falta nada!!!

A ver como pusiste el fread

fread(&con
  • .nombre,sizeof(con
  • .nombre],1,v);[/b][/i]

Junio 05, 2011, 08:04:21 PM #32 Ultima modificación: Junio 05, 2011, 08:33:53 PM por Alejandro_N12
Código: php
fwrite(&con[x], sizeof(a), 1, v);

perdon no entendi!! yo lo puse asi:

Código: php
fread(&con[x].nombre,sizeof(con[x].nombre),1,v);


porque le pones sizeof(a)????

Junio 05, 2011, 08:34:17 PM #34 Ultima modificación: Junio 05, 2011, 08:44:50 PM por Alejandro_N12
Porque a es el tipo del registro, y con sizeof le indicas el tamaño

Edit: El segundo parametro te pide el tamaño de lo que vas a guardar, como vas a guardar un registro de tipo a con sizeof podes saber el tamaño que ocupa

me dice que (a) es simbolo no definido

Junio 05, 2011, 09:00:53 PM #36 Ultima modificación: Febrero 08, 2014, 05:16:01 PM por Expermicid
Código: c
#include<stdio.h>

struct chris{
       char name[30];
       int age;
       };
       
       FILE *fp;
       int main();
       int i;
      int main()
{
       struct chris data[10];
       
       fp = fopen("output.dat", "rb");
       
       for( i = 0; i < 10; i ++ )
       {
            printf("Enter name:");
            scanf("%s", &data[i].name);
            printf("Enter agae:");
            scanf("%d", &data[i].age);
            }
           
            fwrite(data, sizeof(struct chris), 10, fp);
            fclose(fp);
           
            fp = fopen("output.dat", "rb");
            fread(data, sizeof(struct chris), 10, fp);
            for( i = 0; i < 10; i ++){
            printf("%s\n", data[i].name);
            printf("%d", data[i].age);
            getch();
            }



Ahi tenes un code de como se usa

disculpa que sea tan molesto, pero me podrias dar un ejemplo con el codigo de mi agenda? asi se me hace un poco mas facil!!! gracias