Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » dynamisches Array-problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]
000
11.11.2003, 10:56 Uhr
HRI-Dummy



Hallo Leute!

Also ich weiss zu dem Thema ist in diesem Forum viel gepostet worden, aber nichts, was fuer meine Zwecke brauchbar waere.
Ich will ein dynamisches Array haben, dessen Groesse erst mitten im Programmablauf bekannt wird. Durch Benutzereingabe nach der Groesse fragen ist in diesem Fall nicht drin. Also wuerde ich es gerne so machen wie in VB:


Code:
dim char array[1]; /*fragt mich nicht nach genauer Syntax, habe lange kein
                             VB mehr gemacht! */

for (x=0,x<=Abbruchbedingung,x++)
{
      redim array[x]:
      /* Werte einfuegen */
}
next x



Irgendwie so aehnlich ging das doch in VB, genauso will ich es auch in C machen weil mir fuer diese Aufgabe keine andere Loesung einfaellt.
Hat jemand einen Plan, wie das machbar waere?
Danke im Vorraus fuer jede Hilfe!

Dieser Post wurde am 11.11.2003 um 11:00 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.11.2003, 10:58 Uhr
HRI-Dummy



Irgendwas ist bei meinem Post schiefgelaufen, warum ist der [Code] Teil nicht entsprechend formatiert?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.11.2003, 11:01 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


nicht [Code] sondern cpp reinschreiben
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.11.2003, 11:01 Uhr
ao

(Operator)



Zitat:
HRI-Dummy postete
Irgendwas ist bei meinem Post schiefgelaufen, warum ist der [Code] Teil nicht entsprechend formatiert?


1. Tags klein schreiben (code statt Code)

2. Schließendes Tag mit Slash (/) statt Backslash (\).

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.11.2003, 11:02 Uhr
HRI-Dummy



ok, war wohl noch nicht ganz wach!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.11.2003, 11:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ein dynamisches array allokierst du in c mit malloc und in c++ mit new
den speicher gibst du entsprechen mit free bzw. delete wieder frei
wenns nicht unbedingt sein muss würde ich new und delete malloc und free vorziehen


C++:
int *myIntArray = (int*)malloc(10*sizeof(int));
free(myIntArray);
//oder

int *myIntArray = new int[10];
delete [] myIntArray ;



ganz praktisch sind die containerklassen aus der STL ,z.b. std::vector die nehmen dir die speicherverwaltung ab
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 11.11.2003 um 11:07 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.11.2003, 11:07 Uhr
ao

(Operator)



Zitat:
HRI-Dummy postete

Code:
for (x=0,x<=Abbruchbedingung,x++)
{
      redim array[x]:
      /* Werte einfuegen */
}




Wenn du die Anzahl der Elemente vorher kennst (x <= Abbruchbedingung), kannst du auch den ganzen Speicher in einem Rutsch belegen und in der Schleife nur noch Werte zuweisen:

C++:
char * pArray = malloc (nAnzahl); /* Erfolgskontrolle nicht vergessen! */
int nIndex;
for (nIndex = 0; nIndex < nAnzahl; nIndex++)
{
    pArray[nIndex] = nIndex; /* oder was anderes */
}



Wenn du die Anzahl nicht im voraus kennst, sondern zur Laufzeit neue Elemente erzeugen musst, geht das entweder mit realloc oder (nur in C++) mit STL-Containern (z.B. std::list)

Bei malloc und realloc das free am Ende nicht vergessen!

ao

Dieser Post wurde am 11.11.2003 um 11:10 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.11.2003, 12:52 Uhr
HRI-Dummy



Dann habe ich wohl ein Problem, denn die Speicherverwaltung laeuft bei uns ueber eine eigene library mit der das so nicht geht, oder ich verstehe da irgendwas nicht.
Jedenfalls kenne ich die Groeese des Arrays eben nicht vorher. Ich will ein result set aus der Datenbank holen (mit mysql_use_result), da hole ich mir dann in einer for-Schleife solange jede einzelne Zeile vom result set bis nichts mehr kommt. Deshalb ist die Anzahl erst nach Durchlauf der Schleife bekannt. Ich muss aber schon in der Anweisung die einzelnen rows in das Array schreiben.
Wenn ich das oben gezeigte richtig verstehe laesst sich das mit malloc sowieso nicht umsetzen (oder ich bin immer noch auf dem Holzweg), aber irgendwie muss das doch machbar sein.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.11.2003, 12:58 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


also eigentlich liefert dir mysql_num_rows() die anzahl der datensätze des letztens selects, womit sich das problem mit der arraygrösse erübrigen sollte.

Eine andere frage ist auch was du mit den Daten machst und ob du wirklich ein array brauchst, oder die vielleicht auch geschickt anders verarbeiten kannst.
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
11.11.2003, 13:21 Uhr
HRI-Dummy



Das mit mysql_num_rows stimmt nicht ganz, wenn Du mit mysql_store_result arbeitest, dann kriegst Du sofort einen Wert in mysql_num_rows, ich arbeite aber mit mysql_use_result weil das schneller ist und da kriege ich in mysql_num_rows erst einen Wert nachdem ich mit mysql_fetch_row jeden einzelnen Datensatz aus dem result set abgeholt habe. Mit mysql_store_result waere es einfach, aber das ist wie gesagt zu langsam.
Zu Deiner anderen Frage, ich hole mir URL's aus der DB, die sollen irgendiwe gespeichert werden damit ich anschliessend die files auslesen kann. Wuesstest Du vielleicht eine andere Loesung als ein dynamisches Array? Ich waere echt tierisch dankbar!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: