![]() |
DEUTSCHE VERSION |
|
![]() |
Links | | | Forums | | | Comments | | | Report news |
![]() |
Chat | | | Polls | | | Newsticker | | | Archive |
![]() |
amiga-news.de Forum > Programmierung > C Arrays/Nodes Dateien nach größe sortieren | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2009-07-10, 12:36 h MaikG Posts: 5172 User |
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? [ - Answer - Quote - Direct link - ] |
2009-07-10, 13:22 h thomas Posts: 7721 User |
@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. ] [ - Answer - Quote - Direct link - ] |
2009-07-10, 14:34 h thomas Posts: 7721 User |
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/ [ - Answer - Quote - Direct link - ] |
2009-07-10, 14:41 h MaikG Posts: 5172 User |
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? [ - Answer - Quote - Direct link - ] |
2009-07-10, 14:55 h MaikG Posts: 5172 User |
Zitat: Das würde nur in einem einzelnen Verzeichniss funktionieren, für mehrere wäre das recht komplex. [ - Answer - Quote - Direct link - ] |
2009-07-10, 15:28 h thomas Posts: 7721 User |
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/ [ - Answer - Quote - Direct link - ] |
2009-07-10, 15:35 h MaikG Posts: 5172 User |
>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". [ - Answer - Quote - Direct link - ] |
2009-07-10, 18:37 h thomas Posts: 7721 User |
@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/ [ - Answer - Quote - Direct link - ] |
2009-07-10, 19:33 h MaikG Posts: 5172 User |
>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. [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > C Arrays/Nodes Dateien nach größe sortieren | [ - Search - New posts - Register - Login - ] |
![]() |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved. |
![]() |