ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > C Arrays/Nodes Dateien nach größe sortieren | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
10.07.2009, 12:36 Uhr MaikG Posts: 5172 Nutzer |
Ich wollte X Dateien nach der Größe sortieren. Mit einem Array wäre es am einfachsten, da ich jedoch Path und Größe beim einlesen festhalten muss wären das mehrere 100 MB. Bei der verwendung von Nodes wäre der vorteil das nur soviel Speicher allociert wird wie benötigt. Auf die Dateianzahl bezogen. Das Problem mit mehrern 100 MB bleibt Aus dem C Kurs: struct Artikel { char Bezeichnung[40]; // Name des Artikels int Anzahl; // Lagerbestand float Preis; // Preis in Euro }; Der Char ist fest auf 40 definiert, bei mir wären das 1000. Obwohl evtl. der Path nur z.b. 5 zeichen lang sein könnte. Die structur muss immer am Anfang stehen soweit ich weiss. Gibt es keine dynamischen Arrays oder ähnliches unter C? [ - Antworten - Zitieren - Direktlink - ] |
10.07.2009, 13:22 Uhr thomas Posts: 7718 Nutzer |
@MaikG:code:struct Artikel { long Groesse; char Name[1]; } struct Artikel *artikel1 = malloc(sizeof(struct Artikel) + strlen(dateiname)); artikel1->Groesse = dateigroesse; strcpy (artikel1->Name,dateiname); Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ Dieser Beitrag wurde von thomas am 10.07.2009 um 13:22 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
10.07.2009, 14:34 Uhr thomas Posts: 7718 Nutzer |
Zitat: Du solltest den Pfad nur einmal speichern und die Dateieinträge auf den Pfadeintrag verweisen lassen. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
10.07.2009, 14:41 Uhr MaikG Posts: 5172 Nutzer |
und das struct Artikel *artikel1 = malloc(sizeof(struct Artikel) + strlen(dateiname)); funktioniert wärend der laufzeit? denn könnte ich das auch so machen struct Artikel *artikel[1] = malloc(sizeof(struct Artikel) + strlen(dateiname)); und darauf verzichten mich mit den Nodes rumzuschlagen? [ - Antworten - Zitieren - Direktlink - ] |
10.07.2009, 14:55 Uhr MaikG Posts: 5172 Nutzer |
Zitat: Das würde nur in einem einzelnen Verzeichniss funktionieren, für mehrere wäre das recht komplex. [ - Antworten - Zitieren - Direktlink - ] |
10.07.2009, 15:28 Uhr thomas Posts: 7718 Nutzer |
Zitat: Denk erst nach bevor du programmierst. Überleg dir, was *artikel[1] bedeutet und was strlen(dateiname) zurückgibt. Zitat: Wieso ? Alle Dateien eines Verzeichnis auf den Namen des Verzeichnis zeigen zu lassen ist doch nicht komplex. -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
10.07.2009, 15:35 Uhr MaikG Posts: 5172 Nutzer |
>Denk erst nach bevor du programmierst. Überleg dir, was *artikel[1] >bedeutet und was strlen(dateiname) zurückgibt. Zeiger auf artikel[1] und die Anzahl der zeiches der dateilänge oder nicht? >Wieso ? Alle Dateien eines Verzeichnis auf den Namen des Verzeichnis >zeigen zu lassen ist doch nicht komplex. Ich bearbeite aber meherere Verzeichnisse, auf einen einigen path ist nicht schwer. Es funktioniert nicht "declaration found in statement block". [ - Antworten - Zitieren - Direktlink - ] |
10.07.2009, 18:37 Uhr thomas Posts: 7718 Nutzer |
@MaikG:Zitat: Unsinn. struct Artikel * heißt ein Zeiger auf ein struct Artikel. [1] heißt ein Array mit einem Element. D.h. struct Artikel *artikel[1] ergibt ein Array aus Zeigern auf struct Artikel mit genau einem Element (einem Zeiger, nicht einem Artikel). Zitat: Und wie genau ist die zu dem Zeitpunkt, wenn die Zeile ausgeführt wird ? Zitat: Na und ? Wo ist der Unterschied ? Hier ist ein Beispiel, wie man es machen könnte: http://thomas-rapp.homepage.t-online.de/examples/verzeichnis.c Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
10.07.2009, 19:33 Uhr MaikG Posts: 5172 Nutzer |
>Und wie genau ist die zu dem Zeitpunkt, wenn die Zeile ausgeführt wird ? das ist unterschiedlich je nach datei. >Na und ? Wo ist der Unterschied ? Na beim Schwierigkeitsgrad, ich bin Anfänger. >Hier ist ein Beispiel, wie man es machen könnte: http://thomas-rapp.homepage.t-online.de/examples/verzeichnis.c Dankeschön. Muss ich mir Drucken um das richtig zu Verstehen, aber wie ich sehe Funktioniert das mit der Declaration nur wenn ich eine seperate Funktion mache, wo die Variablen wie Dateiname rein übergeben wird damit der Compiler das zulässt. [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > C Arrays/Nodes Dateien nach größe sortieren | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |