1Danke
ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
1679
1679
EMPFEHLEN
-
27.09.08 21:04 #1
- Registriert seit
- Sep 2007
- Beiträge
- 22
HaLo!
Google und Such-Funktionen sagen, dass das Thema schon 1000 mal durchgekaut worden is. Nur leider blick ich noch immer nicht ganz durch, wie ich das bewerkstelligen soll
Pointer, etc. viel zu kompliziert zu verstehen
In PHP würd das in etwas so aussehen....
Logisch wäre dann natürlich in C++PHP-Code:<?php
$array = array();
//...
while ($file = readdir($handle)) {
$array[] = $file;
}
//...
?>
Code :1 2 3 4 5 6 7 8 9 10 11
char** name; // keine Ahnung was das ** bewirkt, aber soll angeblich dann ein Array sein int i = 0, j = 0; //... while (datei = readdir(verzeichnis)) { name[i++] = datei->d_name; } //... for (j = 0; j < i; j++) { cout<<name[j]<<endl; // Dieser Teil funktioniert eben nicht } //...
Wenn ich jedoch den String manuell zuweise und ausgebe funktionierst...
Ich hab schon zig Vorschläge im Netz gelesen und jeder macht es anders.... Da soll man sich auskennen?
"So einfach als nötig" heißt es doch...
http://www.tutorials.de/forum/c-c/28...klarieren.html
So wie "Winner" es im 2 Beitrag schildert bräuchte ichs auch.
Nur halt dynamisch zuweisen, sprich ich kenn [x][y] nicht..
Ich blick halt einfach nicht durch...
Danke für euer Hilfe!Geändert von crazy_root (27.09.08 um 21:06 Uhr)
-
Hallo,
wenn du keine Ahnung hast, was ** bewirkt, dann solltest du dir wirklich erst mal die Grundlagen von C aneignen. An Zeigern wirst du so und so nicht vorbeikommen.
Du machst hier gleich mehrere Sachen falsch. Erstens dereferenzierst du einen Zeiger, ohne ihn zuvor initialisiert zu haben (name). Dass das Programm überhaupt läuft, ist also mehr Zufall als alles andere. Zweitens speicherst du mit der Zuweisung name[i++] = datei->d_name einen Zeiger auf einen Speicherbereich, von dem du nicht weißt, ob er nach dem nächsten Aufruf von readdir überhaupt noch gültig ist. Und nicht zuletzt mischst du C- (char *) und C++-Stil (cout).
Also am besten arbeitest du dich erst mal in die Speicherverwaltung mit C/C++ ein, denn die Fehler die du gemacht hast sind ziemlich grundlegender Natur.
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
Der grundlegende Unterschied ist, dass es in C/C++ keinen vordefinierten Wert für undefinierte Variablen gibt (oder so ähnlich).
Zu deutsch, definierst du ein array, ist dessen Grösse erstmal NULL.
Da rein speichern kannst du gar nichts, solange du den dafür nötigen Speicher nicht reserviert hast.
Ich stehe mit alloc und malloc auch auf Kriegsfuss, aber es gibt da std::string und std::vector, damit kommt man zumindest halbwegs an das ran, was man aus PHP gewohnt ist.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#include <string> #include <vector> //array definieren std::vector<std::string>MyArray; //Eintrag einfügen MyArray.push_back("irgendwas"); //Anzahl Einträge int Anzahl = MyArray.size(); //Einzelner Eintrag std::string EintragNrEins = MyArray[0]; //loop durchs Array for(UINT i = 0; i < MyArray.size(); i++) { // mach irgendwas }
Aber Vorsicht, auch wenn push_back() automatisch den nötigen Speicher bereit stellt, du hast nach wie vor nur genau so viel Platz im Array wie reserviert ist, und alles was nicht definiert ist, gibt es nicht.
Hat das Array nur 3 Einträge und man versucht irgendwas mit MyArray[4] stürzt die Anwendung gnadenlos ab und man kann auch nicht MyArray[5] definieren, solange MyArray[4] nicht existiert.
-
@ thomasio:
wobei es sich hier streng genommen nicht um ein array handelt sondern um eine container klasse die den [] operator überschreibt
-
28.09.08 11:17 #5
- Registriert seit
- Sep 2007
- Beiträge
- 22
@Thomasio
Danke, genau das hab ich gebraucht!
Einfach, aber genial
@Matthias Reitinger
Führt anscheinend kein Weg daran vorbei...
Danke euch!
Ähnliche Themen
-
Control Name aus einem String eine Eigenschaft zuweisen
Von thespecialx im Forum C/C++Antworten: 1Letzter Beitrag: 29.10.08, 20:44 -
Einem Textfeld einen String aus einer Variablen zuweisen
Von Blace im Forum Borland CBuilder und VCLAntworten: 1Letzter Beitrag: 22.01.08, 00:13 -
nummerisches Zeichen in string finden
Von Bamboocha_10 im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 30.10.07, 16:54 -
map-Elemente einem String zuweisen?
Von LadyMarion im Forum C/C++Antworten: 7Letzter Beitrag: 11.09.07, 11:26 -
F: char-Array einem Sting zuweisen
Von smallone im Forum C/C++Antworten: 2Letzter Beitrag: 09.11.04, 13:05





Zitieren

Login






