Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.10.12
Prihlásený: 21.10.15
Príspevky: 18
Témy: 5
Príspevok NapísalOffline : 10.11.2013 10:36

Dobrý deň, mám taky dosť veľký problém, potrebujem načítavať zo súboru stringy nahrávať ich do pola jedine čo viem že pole bude mať staticky zadefinované stĺpce ale neviem kolko riadkov. V súbore sú usporiadané štvorice, a každý riadok zo štvorice musí byť v inom poli, pričom platí že prvé riadky sú v prvom poli a tak ďalej mohol by mi niekto pomôcť, alebo aspoň nájsť chybu v mojom programe? Vopred všetkým ďakujem
Kód:
#include <stdio.h>
#include <stdlib.h>
#define N 51

void nacitV(char ***meno, char ***ulica, double **dan, int **datum)
{
    int j=0;
    FILE *file1;
    if ((file1 = fopen("subor.txt", "r"))==NULL)
        printf("Nepodarilo sa otvorit subor");
    else
    {
        while (!feof(file1))
        {
            (*meno) = ((char **)realloc((*meno), (j+1)*sizeof(char*)));
            (*ulica) = ((char **)realloc((*ulica), (j+1)*sizeof(char*)));
                (*meno)[j] = ((char*)realloc((*meno)[j],N*sizeof(char)));
                (*ulica)[j] = ((char*)realloc((*ulica)[j],N*sizeof(char)));
           
            fgets((*meno)[j], N, file1);
            fgets((*ulica)[j], N, file1);
           
           
           
            (*dan) =(double *) realloc((*dan), (j+1)*sizeof(double));
            fscanf(file1, "%lf",dan[j]);
           
            (*datum) =(int *) realloc((*datum), (j+1)*sizeof(int));
            fscanf(file1, "%d",datum[j]);
           
            fgetc(file1);
            fgetc(file1);
           
            printf("MENO :%s",(*meno)[j]);
            printf("ULICA:%s",(*ulica)[j]);
            printf("DAN: %.2lf\n",*dan[j]);
            printf("DATUM: %d\n\n", *datum[j]);
            j++;
        }
    }
}



int main(int argc, const char * argv[])
{
    char **meno=NULL,**ulica=NULL;
    double *dan=NULL;
    int *datum=NULL;
    nacitV(&meno,&ulica,&dan,&datum);
   
    return 0;
}

Upravené 11.11


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 11.11.2013 10:03

Snaž sa vždy zbaviť čo najviac hviezdičiek, pretože tie robia v programe iba bordel a robia ho veľmi neprehľadným. Ľahko tak vieš niečo prehliadnuť. Vždy sa snaž písať programy čo najprehľadnejšie, nech sa v tom vieš dobre vyznať nie len ty, ale aj hocikto iný, kto na to pozrie.
Ďalej, keď používaš viacrozmerné polia, musíš si poriadne rozmyslieť, ktorý pointer ukazuje kam a čo to znamená.
Takto nejako by to malo robiť to, čo chceš
Kód:
void nacitV(char ***p_meno, char ***p_ulica, double **p_dan, int **p_datum)
{
    // pozri ako si zjednodusim pracu v celej funkcii
    char **meno = *p_meno;
    char **ulica = *p_ulica;
    double *dan = *p_dan;
    int *datum = *p_datum;

    int j = 0;
    FILE *file1 = fopen( "file.txt", "r" );

    if( file1 == NULL )
    {
        printf("Nepodarilo sa otvorit subor");
        return;
    }
    // ziadny else nie je potrebny

    while ( !feof(file1) )
    {
        // rozsirim kazde pole o jedna
        meno  = (char **) realloc( meno,  (j+1)*sizeof(char*) );
        ulica = (char **) realloc( ulica, (j+1)*sizeof(char*) );

        dan   = (double *) realloc( dan,   (j+1)*sizeof(double) );
        datum = (int *)    realloc( datum, (j+1)*sizeof(int)    );

        // alokujem si pamat pre novy string
        meno[j] = (char*) malloc( N*sizeof(char) );
        ulica[j] = (char*) malloc( N*sizeof(char) );

        // citam subor a pri kazdej chybe skoncim (mozem trebars aj ohlasit chybu)
        if( fgets(meno[j], N, file1) == NULL )
            return;

        if( fgets(ulica[j], N, file1) == NULL )
            return;

        if( fscanf(file1, "%lf\n", &dan[j]) != 1 )
            return;

        if( fscanf(file1, "%d\n", &datum[j]) != 1 )
            return;


        printf( "MENO : %s", meno[j] );
        printf( "ULICA: %s", ulica[j] );
        printf( "DAN: %lf\n", dan[j] );
        printf( "DATUM: %d\n\n", datum[j] );
        j++;
    }
}


Ak chceš tieto polia ale ďalej v programe (mimo funkcie nacitV) používať, musíš si niekde vrátiť aj počet načítaných záznamov - tj. dĺžku každého pola.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.10.12
Prihlásený: 21.10.15
Príspevky: 18
Témy: 5
Príspevok Napísal autor témyOffline : 11.11.2013 13:32

Veľmi pekne ti ďakujem, za dobrú radu.


Odpovedať na tému [ Príspevkov: 3 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Dynamicky mikrofon

v Ostatné

0

428

17.08.2011 16:09

ultimateman Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Dynamický disk

v Pevné disky a radiče

4

1756

26.03.2010 9:29

jan037 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. dynamický obsah

v JavaScript, VBScript, Ajax

2

626

01.06.2009 9:50

pilná lama glama Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Include dynamický

v PHP, ASP

3

539

31.01.2012 1:23

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP dynamický title

v PHP, ASP

10

592

25.11.2012 19:00

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. dynamicky disk - vista

v Pevné disky a radiče

9

1160

23.04.2009 19:59

AsuSmaNiaK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Základný a dynamický disk

v Operačné systémy Microsoft

2

3048

18.04.2015 15:22

Alastor Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Dynamicky vs. Typicky kontrast

v Monitory, televízory a projektory

8

599

23.02.2014 15:00

muranec3 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. JAVA: dynamicky pridavane checkboxy

v Assembler, C, C++, Pascal, Java

4

375

27.04.2011 14:47

bimbo34 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Dynamicky Link na obrazok

v HTML, XHTML, XML, CSS

1

380

23.01.2011 21:32

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Dynamicky disk - Windows 7

v Operačné systémy Microsoft

6

513

25.05.2015 15:24

hanesovic Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. LCD TV dynamicky kontrast

v Monitory, televízory a projektory

0

719

19.11.2010 16:07

kllr007 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Dynamický disk (chcem konvertovať)

v Pevné disky a radiče

6

3183

09.08.2010 14:30

DildoGripak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. mysql - dynamický počet fieldov

v Databázy

3

556

07.11.2009 18:46

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Schéma: Predzosilovač pre dynamický mikrofón

v Elektronika

0

5124

23.01.2007 4:58

Elektronic Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [VYRIESENE] priradenie premennej do pola (dynamicky)

v PHP, ASP

5

474

11.03.2009 17:04

stenley Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra