[C] Datenspeicherung

shenziro

Well-known member
ID: 85537
L
7 Mai 2006
72
8
Hi,

mal ne Frage an die C Coder hier. Ich les mich gerade bisschen in C ein und hab auch, dadurch ich PHP beherrsche, schon viel davon gelernt. Jedoch seh ich irgendwie nicht durch wie ich Daten dynamisch speichere und schnell wieder auslesen kann.

In PHP kann man folgendes...

Name ; Value
---- ; -----
ABCD ; EFGH
WXYZ ; BLAH
IJKL ; MNOP
QRST ; UVWX


..einfach lösen:

$Table = array('ABCD'=>'EFGH', 'WXYZ'=>'BLAH', ...);

Doch wie mache man das nun mit C, das ich auch nen x beliebigen Wert von irgendeiner Stelle sofort abfragen kann, so wie ich es in PHP machen würde:

echo $Table['IJKL'];


Ich habe mir schon dynamische Strukturen in einem Tut angesehen, jedoch müsste ich die per Pointer miteinander verknüpfen, und wenn ich den Wert am Ende will, müsste das Programm von vorn bis hinten alle durchsuchen was ich mir Zeitaufwenidig vorstelle, weil Zeit gibt es nicht viel, wenn man ca 10-20 mal pro Sekunde von "Name" den "Wert" braucht.

Ich hoffe jemand weiß einen Rat :(
 
Ich habe mir schon dynamische Strukturen in einem Tut angesehen, jedoch müsste ich die per Pointer miteinander verknüpfen, und wenn ich den Wert am Ende will, müsste das Programm von vorn bis hinten alle durchsuchen was ich mir Zeitaufwenidig vorstelle, weil Zeit gibt es nicht viel, wenn man ca 10-20 mal pro Sekunde von "Name" den "Wert" braucht.
Die Liste wäre für solche Aktionen nicht passend. Korrekt.
Doch wie mache man das nun mit C, das ich auch nen x beliebigen Wert von irgendeiner Stelle sofort abfragen kann, so wie ich es in PHP machen würde:
Wenn du unbedingt Strings als Indizes haben willst, wäre die Hash-Tabelle wohl die beste Datenstruktur. Im Idealfall hast du Zugriff mit O(1).

Versuch bitte nicht, von PHP auf C zu übertragen, das kann nur schiefgehen. Den ganzen Komfort, beliebige nicht-rechteckige, mehr-dimensionale Arrays mit beliebigen Indizes anlegen, ändern und löschen zu können, wirst du bei C nämlich lange suchen ;)
 
Versuch bitte nicht, von PHP auf C zu übertragen, das kann nur schiefgehen. Den ganzen Komfort, beliebige nicht-rechteckige, mehr-dimensionale Arrays mit beliebigen Indizes anlegen, ändern und löschen zu können, wirst du bei C nämlich lange suchen ;)
Eben, viel 'leichter' wird es, von C/C++ auf PHP zu gehen, da fällt einiges an Arbeit weg...was aber wiederum zu mehr unsauberen Code führt, aber naja, egal.
Auf jeden Fall: Schau dir C an und denk nicht mehr an PHP. Die Erfinderzeit von C ist lang her, PHP ist dagegen etwas jüngeren alters.
Ich empfehle dir das Studium von 'Programmieren in C' von Brian W. Kernighan (Autor), Dennis M. Ritchie (Autor) und schalt dabei dein (PHP)Hirn ab, dann fällt es etwas leichter.
Ansonsten ist C relativ wenig verbreitet, derzeit zieht sich vielmehr C++ durch alle Lande, da nun auch mobile Endgeräte und microchips wesentlich mehr Speicherkap. haben, kann man da nun endlich mit dem 'moderneren' C++ arbeiten.
Viel Spaß...
 
Wenn möglich mit numerischen Indizes arbeiten, ansonsten wie gesagt Hashtables verwenden... denk auch daran, dass du für dynamische Arrays zur Laufzeit den nötigen Speicher alloziieren (und nach Gebrauch natürlich auch wieder freigeben) mußt.
 
Danke für die vielen Antworten.

Nunja, C++ will ich erstmal nicht da wir in der Berufsfachschule auch erstmal C lernen und danach dann C# (Extralehrgang für die, die es wollen). Dann müsste ich zu C jetzt C++ nebenher lernen, das geht nicht gut ;)

Nunja, Hashtables hab ich noch nirgends in einem C-Tutorial gelesen. Werd mal Google ausquetschen gehen...

mfg