[C]kopiowanie zawartości pliku do dynamicznej tablicy struktu
Ostatnio zmodyfikowano 2014-05-03 14:10
pekfos |
» 2014-05-03 14:08:47 mam taki problem podczas uruchamiania programu program się blokuję |
Gdzie się blokuje? fscanf( plik, "%s", znaki ); strcpy( dynamiczny[ i ].imie, znaki );
|
Jeden wielki buffer overflow. |
|
rastaman697 Temat założony przez niniejszego użytkownika |
» 2014-05-03 14:10:12 teat zamkniety ) rozwiazanie : #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 ); fscanf( plik, "%s", znaki ); printf( "%s", znaki ); strcpy( dynamiczny[ i ].nazwisko, znaki ); fscanf( plik, "%s", znaki ); printf( "%s", znaki ); strcpy( dynamiczny[ i ].nrIndeksu, znaki ); fscanf( plik, "%s", znaki ); printf( "%s", znaki ); strcpy( dynamiczny[ i ].wydzial, znaki ); fscanf( plik, "%d", & a ); printf( "%i", a ); dynamiczny[ i ].rok = a; } fclose( plik ); free( dynamiczny ); system( "Pause" ); return 0; }
|
|
1 « 2 » |