Realloc() – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Realloc() – C / C++ – Fórum – Programujte.comRealloc() – C / C++ – Fórum – Programujte.com

 

Kuba-$0
Newbie
15. 12. 2007   #1
-
0
-

prosim vas, jak se pouziva funkce realloc?

mam strukturu:



typedef struct tosoba
{
int jmeno[POCPISM+1];
int prijmeni[POCPISM+1];
int pohlavi[2];
char majetek;
char dluh;
} TOsoba;


a pole


int al = 5;
TOsoba *seznam=(TOsoba*)malloc(al*sizeof(TOsoba));


a ted to potrebuju zvetsit. jak to provedu?
 

int alok = al *2;

TOsoba* realloc(TOsoba *seznam, alok);

???
ale pise mi to tyto chyby:


syntax error before "alok"



conflicting types for 'realloc'


C:/DevCpp/include/stdlib.h:347: error: previous declaration of 'realloc' was here

Nahlásit jako SPAM
IP: 85.132.224.–
Jonyzz0
Návštěvník
15. 12. 2007   #2
-
0
-

To kuba: Použití realloc je prakticky stejné jako malloc:



int al = 5;
TOsoba *seznam = (TOsoba*) malloc(al * sizeof(TOsoba));

// Zvetseni pole 2x
seznam = (TOsoba*) realloc(2 * al * sizeof(TOsoba));

Nahlásit jako SPAM
IP: 62.40.69.–
_k_
Duch
15. 12. 2007   #3
-
0
-

Kukni sem: http://www.cplusplus.com/reference/clibrary/cstdlib/realloc.html

To Jonyzz : Chyba ti tam parameter u realloc.

Nahlásit jako SPAM
IP: 195.91.54.–
Jonyzz0
Návštěvník
15. 12. 2007   #4
-
0
-

To _k_ :
Jej, diky za upozornění, moc často realloc nepoužívám.

Nahlásit jako SPAM
IP: 62.40.69.–
Kuba-$0
Newbie
16. 12. 2007   #5
-
0
-

Nakonec jsem to udelal takhle:

v mainu mam toto



int al = 4;
TOsoba *seznam=(TOsoba*)malloc(al*sizeof(TOsoba));

nacti(fin, seznam, &al, &pocetid);

v ve funkci nacti musim toto pole zvetsovat


int nacti(FILE *fin, TOsoba *seznam, int *al, int *pocetid)
{
int id;
id = *pocetid;

if (id == *al) { // pocet prvku se rovna maximalnimu poctu v poli -> proto realokace
*al *= 2; // realokuju pamet na dvojnasobek
seznam = (TOsoba*) realloc(seznam,(*al) * sizeof(TOsoba));
}

ale mam problem. na prvni 4 hodnoty se mi uklada vsechno spravne.
ale potom, az provedu realokaci, tak se mi misto hodnot ukladaji(a zobrazuji) adresy...

co s tim?

pro presnost. na 6 radku jsem vlozil to same a ve vysledku se mi zobrazuje toto:




JMENO: 6 1 35 PRIJMENI: 17 32 3 POHLAVI: 1
MAJETEK: - 1 2 DLUH: 4 5

JMENO: 6 1 35 PRIJMENI: 17 32 3 POHLAVI: 1
MAJETEK: - 1 2 DLUH: 4 5

JMENO: 6 1 35 PRIJMENI: 17 32 3 POHLAVI: 1
MAJETEK: - 1 2 DLUH: 4 5

JMENO: 6 1 35 PRIJMENI: 17 32 3 POHLAVI: 1
MAJETEK: - 1 2 DLUH: 4 5

JMENO: 6488068 524681 2090322144 PRIJMENI: 1394631790 1769239653 15510669
90 POHLAVI: 0
MAJETEK: DLUH:

JMENO: 0 0 0 PRIJMENI: 538976288 538976288 538976288 POHLAVI: 538968064
MAJETEK: ► DLUH: ► ► ►

Nahlásit jako SPAM
IP: 85.132.224.–
Tor
~ Anonymní uživatel
1 příspěvek
19. 12. 2007   #6
-
0
-

typedef struct clovek

{
char jmeno[NAME_LEN+1]; /**< retezec ukonceny nulou */
char primeno[NAME_LEN+1]; /**< retezec ukonceny nulou */
int pohlavi; /**< 0 muz, 1 zena */
int majetek; /**< Hodnota majetku */
int dluh; /**< Hodnota dluhu */
}TPerson;
//TPerson, *PTPerson;


typedef struct pole
{
TPerson *pole; /**< Struktura člověka*/
int cis_index; /**< Číslo indexu v poli. */
//int *pole; /**< Ukazatel na dynamicky alokované pole. */
int *vektor; /**< Ukazatel na dynamicky alokované pole. */
}TPole;


ahojte mam problem .. furt mam problemy pro zvetseni pole struktur
ve funkci mam to tak to

int size = blokC ;

// malokace struktury
if ((zaznam->pole = (TPerson*) malloc(size * sizeof(TPerson)))== NULL)
return ELOWMEM;
// malokace pole
if ((zaznam->vektor = malloc(size * sizeof(int))) == NULL)
return ELOWMEM;

zaznam->pole = (TPerson*) realloc(zaznam->pole, size*sizeof(TPerson));
if (zaznam->pole== NULL)
return ELOWMEM;


int* pvektor = realloc(zaznam->vektor, size*sizeof(int));
if (pvektor == NULL)
return ELOWMEM;
zaznam->vektor = pvektor;


uy vazne nevim co stim .. furt nemuzu zvetsit tu strukturu furt to hazi warring a erro nebo kdyz uz to je v pohode tak to zas rve v linu ze neopravneny pirstup do pameti

Nahlásit jako SPAM
IP: 147.229.176.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 20 hostů

Podobná vlákna

Realloc — založil oxidián

Realloc — založil Martin

Realloc a NULL — založil olgo

Realloc matice — založil constantine

Proč padá funkce po realloc? — založil oxidián

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý