Obsah fóra
PravidláRegistrovaťPrihlásenie




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

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

Registrovaný: 28.05.10
Prihlásený: 28.05.10
Príspevky: 2
Témy: 1
Príspevok NapísalOffline : 28.05.2010 15:28

Dobry den,

mam jeden problem s funkciou, resp, viditelnostou premennych, alebo ako by som to nazval. Prvy krat som sa rozohodol pouzit oddeleny preklad, lebo som sa prestal orientovat v jednom programiku, ktory robim, takze rad prijimem aj trochu teorie, aj prakticke rady.
Ale konkretne mam takyto cvicny priklad (realne je to komplikovanejsie, ale rovnaky princip):

subor main.c
#include <stdio.h>
#include <stdlib.h>

#include "strt.h"

#define TEST
// #undef TEST

extern int nacitaj(RIADOK *ps, int *n);

int main(int argc, char **argv)
{

int Pocet;
RIADOK *PoleRiadkov;

int i;

nacitaj(PoleRiadkov, &Pocet);

#ifdef TEST

printf("Test funkcie nacitaj\nPocet nacitanych riadkov:%d\n", Pocet);

for(i = 0; i < Pocet; i++)
printf("Riadok %d/%d \"%s\" ma pocet znakov %d\n", i+1, Pocet, (PoleRiadkov + i)->Riadok, (PoleRiadkov + i)->PocetZnakov);
#endif

return(0);

}

subor strt.h

/* definovane strktury */

typedef struct riadok{
int PocetZnakov;
char Riadok[300];
}RIADOK;


subor fun.c

#include <stdio.h>
#include <string.h>

#include "strt.h"

#define TEST
// #undef TEST

extern RIADOK *alokujPoleRIADOK(int p);

int nacitaj(RIADOK *ps, int *n);

int nacitaj(RIADOK *ps, int *n){

int i;

*n = 3;

if((ps = alokujPoleRIADOK(*n)) == NULL)
return(-1);

strcpy(ps->Riadok, "Cvicny priklad");
strcpy((ps + 1)->Riadok, "na oddeleny preklad");
strcpy((ps + 2)->Riadok, "zlyhava na viditelnosti pola struktur ::(");

for(i = 0; i < *n; i++)
(ps + i)->PocetZnakov = strlen((ps + i)->Riadok);

#ifdef TEST
for(i = 0; i < *n; i++)
printf("Riadok %d/%d \"%s\" ma pocet znakov %d\n", i+1, *n, (ps + i)->Riadok, (ps + i)->PocetZnakov);
#endif

return(0);
}


subor akok.c

/* alokacne funkcie */

#include <stdlib.h>
#include "strt.h"


RIADOK *alokujPoleRIADOK(int p);

RIADOK *alokujPoleRIADOK(int p){
return((RIADOK *) malloc(p * sizeof(RIADOK)));
}

Toto je prelozene pod Dev-C++.

Vysledok chodu programu:
Riadok 1/3 "Cvicny priklad" ma pocet znakov 14
Riadok 2/3 "na oddeleny preklad" ma pocet znakov 19
Riadok 3/3 "zlyhava na viditelnosti pola struktur ::(" ma pocet znakov 41
Test funkcie nacitaj
Pocet nacitanych riadkov:3
.............a pad programu. :(

Pada to na tom, ze premenna PoleRiadkov je nulova v module main.c a ja neviem preco, ked som ju odovzdal ako pointer. Pritom premenna Pocet funguje.
Prosim poradte mi ako definovat taketo pole struktur, aby to fungovalo, ako ma.

Dakujem!


Offline

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

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 28.05.2010 22:18

Aby ti to tak fungovalo potrebuješ ukazovateľ na ukazovateľ (a teda volanie bude nacitaj(&PoleRiadkov, &Pocet); a samozrejme treba upraviť aj samotnú funkciu a jej deklaráciu, ale niečo podobné si už robil pri tom druhom parametrem takže by to nemalo byť zložité).

PS: Deklarácia tej funkcie patrí do hlavičkového súboru.


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


Podobné témy

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

v Intel - Integrated Electronics

15

522

13.04.2020 22:43

Ivan-K Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C - spajany zoznam struktur - help

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

2

386

02.05.2014 19:29

TieSTiK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Jednosmerny spajany zoznam struktur v C

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

7

1770

08.05.2013 15:28

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ a praca s triedenim struktur

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

2

802

01.06.2008 17:39

capricorn7 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako spojazdnit headset ak notebook má 2 oddelený JACKy? (separátne na mikrofón a sluchádlá)

v Zvuk

5

467

26.09.2016 22:05

uterak Zobrazenie posledných príspevkov

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

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

10

1493

18.11.2006 10:07

audiotrack Zobrazenie posledných príspevkov

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

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Pevné disky a radiče

54

6422

10.01.2007 20:10

ertin Zobrazenie posledných príspevkov

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

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

8

797

15.08.2009 9:44

beginner Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

2

278

05.02.2013 20:32

Ďuri Zobrazenie posledných príspevkov

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

v Redakčné systémy

4

768

04.01.2011 12:22

prohibit Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

5

577

20.06.2009 15:38

Snacker Zobrazenie posledných príspevkov

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

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

2

638

15.11.2012 21:14

Denco1 Zobrazenie posledných príspevkov

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

v PHP, ASP

3

414

28.09.2011 22:56

Ando Zobrazenie posledných príspevkov

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

v PHP, ASP

3

567

07.12.2010 16:41

venom2 Zobrazenie posledných príspevkov

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

v Ostatné

3

270

16.09.2014 14:47

logarytmus Zobrazenie posledných príspevkov

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

v Delphi, Visual Basic

2

727

22.01.2013 22:50

Gregi555 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