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

[C]kopiowanie zawartości pliku do dynamicznej tablicy struktu

Ostatnio zmodyfikowano 2014-05-03 14:10
Autor Wiadomość
pekfos
» 2014-05-03 14:08:47
mam taki problem podczas uruchamiania programu program się blokuję
Gdzie się blokuje?

C/C++
fscanf( plik, "%s", znaki );
strcpy( dynamiczny[ i ].imie, znaki );
Jeden wielki buffer overflow.
P-109163
rastaman697
Temat założony przez niniejszego użytkownika
» 2014-05-03 14:10:12
teat zamkniety ) rozwiazanie :
C/C++
#include <stdlib.h>
#include <stdio.h>


typedef struct typ_karta {
    char imie[ 10 ];
    char nazwisko[ 10 ];
    char nrIndeksu[ 10 ];
    char wydzial[ 10 ];
    int rok;
} karta;

int ile_linijek() {
   
    char zn[ 50 ];
    int spacje = 1;
    FILE * plik3;
   
    plik3 = fopen( "E:\\c\\test.txt", "a+" );
   
    if( fgets( zn, 50, plik3 ) != NULL ) spacje++;
   
    fclose( plik3 );
   
    return spacje;
}

int main() {
   
    const int ilosc = ile_linijek();
    karta * dynamiczny;
    dynamiczny =( karta * ) malloc( sizeof( karta ) * ilosc );
    FILE * plik;
   
    plik = fopen( "E:\\c\\test.txt", "r+" );
    int i = 0;
    char znaki[ 55 ];
    int a;
   
   
    for( i = 0; i < ilosc; i++ ) {
       
        fscanf( plik, "%s", znaki );
        printf( "%s", znaki );
        strcpy( dynamiczny[ i ].imie, znaki );
        //strcpy(pomoc.imie, znaki);
       
        fscanf( plik, "%s", znaki );
        printf( "%s", znaki );
        strcpy( dynamiczny[ i ].nazwisko, znaki );
        //strcpy(pomoc.nazwisko, znaki);
       
        fscanf( plik, "%s", znaki );
        printf( "%s", znaki );
        strcpy( dynamiczny[ i ].nrIndeksu, znaki );
        //strcpy(pomoc.nrIndeksu, znaki);
       
        fscanf( plik, "%s", znaki );
        printf( "%s", znaki );
        strcpy( dynamiczny[ i ].wydzial, znaki );
        //strcpy(pomoc.wydzial, znaki);
       
        fscanf( plik, "%d", & a );
        printf( "%i", a );
        dynamiczny[ i ].rok = a;
        //strcpy(dynamiczny[i].rok,zn);
        //strcpy(pomoc.rok, znaki);
       
    }
   
    fclose( plik );
    //printf("%s", dynamiczny[0].nazwisko);
    free( dynamiczny );
    system( "Pause" );
    return 0;
}
P-109164
1 « 2 »
Poprzednia strona Strona 2 z 2