PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] Array Größe und Ini- Dateien



sixfriends
13-02-2004, 13:59
1. Ich will ein Array definieren, von dem ich die Größe erst zur Laufzeit des Programmes kenne. Ist das irgendwie möglich? Vielleicht, indem ich den Speicherplatz selbst allokiere? Aber wie bekomm ich das ganze dann in die Struktur eines Arrays?
Ich hab schon den Typ vektor gesehen, aber das hört sich ziemlich nach Liste an. Wenn das ne Liste ist, könnte ich mir das Ding auch selbst implementieren.



2. Ich hab bei einigen Programmen mal die Ini- Dateien durchgeguckt und die meisten sind so aufgebaut (Benutze z.Z. die Win32.api):
[Überschrift]
Variable1=Wert1
Variable2=Wert 2
....

Bringt mich zu der Annahme, dass es zum Einlesen der Dateien eine vordefinierte Funktion gibt. Oder muss ich mir da doch selbst was coden?

thx im Voraus - sixfriends

SeeksTheMoon
13-02-2004, 15:02
Mit Vektoren arbeitet man meistens besser als mit Arrays, denn es sind Arrays mit netten Zusatzmethoden, die einen vor Fehlern schützen und einem Zeit sparen.
Ob es für die ini-Dateien in der W32 Bibliothek eine fertige Funktion gibt weiß ich nicht, so eine Funktion habe ich nämlich noch nicht gesehen.
Aber das ist ja relativ leicht selber zu implementieren

f0rtex
13-02-2004, 19:59
Original geschrieben von sixfriends
...Ich hab schon den Typ vektor gesehen, aber das hört sich ziemlich nach Liste an. Wenn das ne Liste ist, könnte ich mir das Ding auch selbst implementieren...

Nichts gegen deine Programmierkünste, aber erfindest du das Rad immer neu ;) ?
Falls du mit "Zahlen-Arrays" arbeitest, kannst du den Container valarray benutzen.

greets
f0rtex

p.s.: die STL ist da um gebraucht zu werden ;)

sixfriends
13-02-2004, 20:51
Ich schreib mir meine Listen normalerweise immer selbst. Hat den Vorteil, dass ich die Dinger immer genau auf meine Wünsche anpassen kann. :eek:

Im übrigen will ich Strings laden. Gibt es jetzt eine Möglichkeit, mir beispielsweise selbst Speicherplatz allokieren und daraus ein Array zu bauen. Wäre mir wirklich lieber als eine Liste und die Größe des Arrays muss sich auch nicht mehr ändern, wenn es mal erstellt ist. --> Überflüssige Funktionalität in vektor....

Hat wriklich keiner ne gute Idee dazu?

EDIT: Mit gute Idee mein ich was, das mir konkret hilft, war nicht beleidigend gemeint :rolleyes:

pik7
13-02-2004, 21:12
hallo,

kannste keine VLA's benutzen?

z.b so:

int zeilen=20;
int spalten=40;
char array[zeilen][spalten]

brauchste aber nen c99 compiler für
beim gcc dann noch die -std=c99

anda_skoa
14-02-2004, 14:31
Original geschrieben von sixfriends
2. Ich hab bei einigen Programmen mal die Ini- Dateien durchgeguckt und die meisten sind so aufgebaut (Benutze z.Z. die Win32.api):
[Überschrift]
Variable1=Wert1
Variable2=Wert 2
....

Bringt mich zu der Annahme, dass es zum Einlesen der Dateien eine vordefinierte Funktion gibt. Oder muss ich mir da doch selbst was coden?

Ja, die WinAPI hat dafür eigene Funktionen.
Außerdem gibt es hunderte Bibliotheken, die INI-Style Dateien parsen und schreiben können.

Ciao,
_

DanDanger
22-02-2004, 17:01
Hi,

natürlich kannt du Speicherplatz für dein Array Dynamisch Allozieren.

In C Wird ein Array ja als Zeiger auf das erste Array-Element angesehen.

z.B.




char *MyStringArray ;
unsigned int NrOfElements

MyStringArray = malloc(sizeof(char * NrOfElements)) ;



Nun ist im Speicher Platzt für <NrOfElements> viele char's.
Den Zugriff auf das Array geht dann wie gewohnt über MyStringArray[x]

Gruss
DanDanger

wraith
22-02-2004, 18:20
Original geschrieben von DanDanger



MyStringArray = malloc(sizeof(char * NrOfElements)) ;


Klammern falsch gesetzt.
Außerdem ist sizeof(char) immer 1,also reicht


MyStringArray = malloc(NrOfElements) ;

sixfriends
22-02-2004, 19:19
Werd ich demnächt ausprobieren. thx.