Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program czytajacy dane do struktury

Ostatnio zmodyfikowano 2015-05-05 11:23
Autor Wiadomość
howorang
Temat założony przez niniejszego użytkownika
Program czytajacy dane do struktury
» 2015-05-05 00:06:20
Hej, mam problem z pewną częścią programu:
C/C++
#include <stdio.h>
#include <stdlib.h>


typedef struct uczen
{
    char klasa[ 2 ];
    char imie[ 20 ];
    char nazwisko[ 10 ];
    char wychowawca[ 20 ];
    char sprawowanie[ 20 ];
} uczen;
int main()
{
   
   
    FILE * fp;
    int i, m;
    int n = 0;
    fp = fopen( "szkola.bin", "rb" );
    //readowanie
    fseek( fp, 0, SEEK_END );
    int rozmiarpliku = ftell( fp );
    fseek( fp, 0, SEEK_SET );
    printf( "Podaj liczbe uczniow do wpisania: \n" );
    scanf( "%d", & n );
    uczen * wsk = malloc( rozmiarpliku / sizeof( uczen ) + n * sizeof( uczen ) );
    for( i = 0;; i++ )
    {
        if( fread(( wsk + i )->imie, sizeof( char ), 20, fp ) != 20 )
        {
            break;
        }
        fread(( wsk + i )->nazwisko, sizeof( char ), 20, fp );
        fread(( wsk + i )->wychowawca, sizeof( char ), 20, fp );
        fread(( wsk + i )->sprawowanie, sizeof( char ), 20, fp );
        fread(( wsk + i )->klasa, sizeof( char ), 2, fp );
       
    }
    fclose( fp );
    //readowanie
    fp = fopen( "szkola.bin", "wb" );
    for( m = 0; m < n; i++, m++ )
    {
        printf( "Podaj imie ucznia %d: \n", i + 1 );
        scanf( "%s",( wsk + i )->imie );
        fwrite(( wsk + i )->imie, sizeof( char ), 20, fp );
        printf( "Podaj nazwisko ucznia %d: \n", i + 1 );
        scanf( "%s",( wsk + i )->nazwisko );
        fwrite(( wsk + i )->nazwisko, sizeof( char ), 20, fp );
        printf( "Podaj wychowawce ucznia %d: \n", i + 1 );
        scanf( "%s",( wsk + i )->wychowawca );
        fwrite(( wsk + i )->wychowawca, sizeof( char ), 20, fp );
        printf( "Podaj sprawowanie ucznia %d: \n", i + 1 );
        scanf( "%s",( wsk + i )->sprawowanie );
        fwrite(( wsk + i )->sprawowanie, sizeof( char ), 20, fp );
        printf( "Podaj imie klase %d: \n", i + 1 );
        scanf( "%s",( wsk + i )->klasa );
        fwrite(( wsk + i )->klasa, sizeof( char ), 2, fp );
       
    }
    for( i = 0; i <( rozmiarpliku / 82 + n ); i++ )
    {
       
        printf( "%s %s %s %s %s",( wsk + i )->imie,( wsk + i )->nazwisko,( wsk + i )->klasa,( wsk + i )->wychowawca,( wsk + i )->sprawowanie );
    }
    /*
        printf("Wpisz sprawowanie do filtrowania: ");
        char napis[20];
        scanf("%s",napis);
        switch(napis)
        {
        case "wzorowe":
            for(i=0;i<(rozmiarpliku/82 + n),i++)
            {
                if(strcmp((wsk+i)->sprawowanie,"wzorowe") = 1)
                {
                     printf("%s %s %s %s %s" ,(wsk+i)->imie,(wsk+i)->nazwisko,(wsk+i)->klasa,(wsk+i)->wychowawca,(wsk+i)->sprawowanie);
                }
            }
        }
        */
   
   
   
   
    fclose( fp );
    return 0;
}
Program nie spisuje do struktury danych ze wczesniej istniejacego pliku, byłbym wdzięczny za każdą formę pomocy.
P-131782
darko202
» 2015-05-05 11:23:51
zastanów się nad linią
fp = fopen( "szkola.bin", "wb" );

dokładnie co oznacza tryb "wb"
http://cpp0x.pl/dokumentacja​/standard-C/fopen/446


P-131791
« 1 »
  Strona 1 z 1