rastaman697 Temat założony przez niniejszego użytkownika |
[C]kopiowanie zawartości pliku do dynamicznej tablicy struktu » 2014-05-03 04:28:46 witam mam taki problem podczas uruchamiania programu program się blokuję wywnioskowałem że źle chcę zapisać do poszczególnych pól. Mój kompilator to VS 2013 #include <stdlib.h> #include <stdio.h>
typedef struct typ_karta { char imie[ 10 ]; char nazwisko[ 10 ]; char nrIndeksu[ 10 ]; char wydzial[ 10 ]; char rok; } karta;
int ile_linijek() { char zn[ 50 ]; static 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() { karta * dynamiczny; dynamiczny =( karta * ) malloc( sizeof( karta ) * ile_linijek() ); printf( "%p", * dynamiczny ); FILE * plik; plik = fopen( "E:\\c\\test.txt", "r+" ); int i = 0; char znaki[ 55 ]; for( i = 0; i <= ile_linijek(); i++ ) { fscanf( plik, "%s", znaki ); strcpy( dynamiczny[ i ].imie, znaki ); fscanf( plik, "%s", znaki ); strcpy( dynamiczny[ i ].nazwisko, znaki ); fscanf( plik, "%s", znaki ); strcpy( dynamiczny[ i ].nrIndeksu, znaki ); fscanf( plik, "%s", znaki ); strcpy( dynamiczny[ i ].wydzial, znaki ); fscanf( plik, "%c", znaki ); strcpy( dynamiczny[ i ].rok, znaki ); } fclose( plik ); free( dynamiczny ); system( "Pause" ); return 0; }
|
|
pekfos |
» 2014-05-03 11:47:42 for( i = 0; i <= ile_linijek(); i++ )
|
Rly? Wywołuj to raz, zapisz wynik gdzieś i nie używaj tej funkcji gdzie popadnie. |
|
Wrzud |
» 2014-05-03 12:32:48 @up Czyli.. for( int i = 0, l = ile_linijek(); i < l; ++i )
|
|
rastaman697 Temat założony przez niniejszego użytkownika |
» 2014-05-03 13:13:45 nadal problem wystepuje :( |
|
Wrzud |
» 2014-05-03 13:22:17 Zmień w forze by nie jechał do końca tablicy tylko żeby się zatrzymywął przed jej końcem. Wyedytowałem post. |
|
rastaman697 Temat założony przez niniejszego użytkownika |
» 2014-05-03 13:31:49 #include <stdlib.h> #include <stdio.h>
typedef struct typ_karta { char imie[ 10 ]; char nazwisko[ 10 ]; char nrIndeksu[ 10 ]; char wydzial[ 10 ]; char rok; } karta;
int ile_linijek() { char zn[ 50 ]; static 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 pomoc; karta * dynamiczny; dynamiczny =( karta * ) malloc( sizeof( karta ) * ilosc ); FILE * plik; plik = fopen( "E:\\c\\test.txt", "r+" ); int i = 0; char znaki[ 55 ]; for( i = 0; i <= ilosc; ++i ) { fscanf( plik, "%s", znaki ); strcpy( dynamiczny[ i ].imie, znaki ); fscanf( plik, "%s", znaki ); strcpy( dynamiczny[ i ].nazwisko, znaki ); fscanf( plik, "%s", znaki ); strcpy( dynamiczny[ i ].nrIndeksu, znaki ); fscanf( plik, "%s", znaki ); strcpy( dynamiczny[ i ].wydzial, znaki ); fscanf( plik, "%c", znaki ); strcpy( dynamiczny[ i ].rok, znaki ); } fclose( plik ); free( dynamiczny ); system( "Pause" ); return 0; }
nadal problem :( |
|
pekfos |
» 2014-05-03 13:57:08 for( i = 0; i <= ilosc; ++i )
| < |
|
rastaman697 Temat założony przez niniejszego użytkownika |
» 2014-05-03 14:02:54 uruchamia sie u Ciebie bo u mnie nie :( nadal |
|
« 1 » 2 |