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ść
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
C/C++
#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;
}
P-109146
pekfos
» 2014-05-03 11:47:42
C/C++
for( i = 0; i <= ile_linijek(); i++ )
Rly? Wywołuj to raz, zapisz wynik gdzieś i nie używaj tej funkcji gdzie popadnie.
P-109150
Wrzud
» 2014-05-03 12:32:48
@up Czyli..
C/C++
for( int i = 0, l = ile_linijek(); i < l; ++i )
P-109152
rastaman697
Temat założony przez niniejszego użytkownika
» 2014-05-03 13:13:45
nadal problem wystepuje :(
P-109154
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.
P-109155
rastaman697
Temat założony przez niniejszego użytkownika
» 2014-05-03 13:31:49
C/C++
#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 );
        //strcpy(pomoc.imie, znaki);
       
        fscanf( plik, "%s", znaki );
        strcpy( dynamiczny[ i ].nazwisko, znaki );
        //strcpy(pomoc.nazwisko, znaki);
       
        fscanf( plik, "%s", znaki );
        strcpy( dynamiczny[ i ].nrIndeksu, znaki );
        //strcpy(pomoc.nrIndeksu, znaki);
       
        fscanf( plik, "%s", znaki );
        strcpy( dynamiczny[ i ].wydzial, znaki );
        //strcpy(pomoc.wydzial, znaki);
       
        fscanf( plik, "%c", znaki );
        strcpy( dynamiczny[ i ].rok, znaki );
        //strcpy(pomoc.rok, znaki);
       
    }
   
    fclose( plik );
   
    free( dynamiczny );
    system( "Pause" );
    return 0;
}
 nadal problem :(
P-109157
pekfos
» 2014-05-03 13:57:08
C/C++
for( i = 0; i <= ilosc; ++i )
<
P-109161
rastaman697
Temat założony przez niniejszego użytkownika
» 2014-05-03 14:02:54
uruchamia sie u Ciebie bo u mnie nie :( nadal
P-109162
« 1 » 2
  Strona 1 z 2 Następna strona