Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ProgramadorAnonimo

#1
Mira, recién probé con el retorno de fread y sigue pasando lo mismo; y las extensiones la verdad las estábamos usando solo para los archivos de texto, en ningún momento me dijeron que utilizara una extensión para un archivo binario. No creo que la solución sea la extensión...
#2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct ARTI {
    short int ART;
    char COD[50];
    char DESC[100];
    char FAB[50];
    short int STOCK;
    int POS;
}    ;


int main()
{
    FILE * FP;
    struct ARTI X;


    if((FP = fopen("BDARTICULOSindexado","rb")) == NULL)
    {
        printf("\n\n\t ERROR EN LA APERTURA DEL ARCHIVO\n\n");
        exit(1);
    }

    fread(&X,sizeof(X),1,FP);
    printf("\n\n %5s %10s %30s %27s %8s %15s","ARTICULO","CODIGO","DESCRIPCION","FABRICANTE","STOCK","POSICION");

    while(!feof(FP))
    {
        printf("\n\n %5d %15s %35s %20s %8d %10d ",X.ART , X.COD , X.DESC , X.FAB , X.STOCK , X.POS);
        fread(&X,sizeof(X),1,FP);
    }


    fclose(FP);

    printf("\n\n\n\n");
}


El problema acá es que a la hora de ver en pantalla el printf con los datos muestra algunas cosas que están en la base de datos y otra parece basura del sistema; la base de datos es correcta porque ya la utilicé en otros programas. No se que hacer realmente, si me pudieran ayudar se los agradecería.

MOD: Etiqueta GeSHi
#3
Que tal, tengo unas dudas respecto a cuestiones con punteros en C que no logro entender,  espero que me puedan ayudar, se los agradecería mucho.

El codigo es el siguiente:

struct alumno{
    int legajo;
    char genero;
    char nombre[30];
    float promedio;
};

int main(){

struct alumno *P; // PUNTERO PARA EL VECTOR DE ESTRUCTURAS EN MEMORIA DINAMICA
   int I;


    P = (struct alumno*) malloc(3 * sizeof(struct alumno));


    printf("\n\n\t INGRESO DE LOS DATOS");


       for( I = 0 ; I < N ; I++)
        {
            printf("\n\n\t INGRESE EL NOMBRE : ");
            gets((P+I)->nombre);

            printf("\n\t INGRESE EL LEGAJO : ");
            scanf("%d", &((P+I)->legajo));

            printf("\n\t INGRESE EL GENERO : ");
            scanf("%c", &((P+I)->genero));

            printf("\n\t INGRESE EL PROMEDIO : ");
            scanf("%f", &((P+I)->promedio));
            fflush(stdin);
        }

Lo que no logro entender es por que en los scanf es necesario utilizar el operador & para su direccion en memoria. No es que al estar apuntando a un campo de la struct alumno ya es una dirección? Y por que en el caso del gets no necesito ponerlo? No lo entiendo.

Gracias por su tiempo!