Rain Geschrieben 11. Februar 2003 Geschrieben 11. Februar 2003 Hy Zwei Fragen zu Zeichenketten 1.) Ich möchte von einer Zeichenkette einfach die letzten vier Zeichen abschneiden nur funkt das nicht ganz. Hier mein code: void printtitle(int my_ind) { int l=0; l = strlen(pllist[my_ind]); char helpst[(l-4)]; strncpy(helpst, pllist[my_ind],(l-4)); puts(helpst); } Anmerkungen: pllist[] ist vom Typ char* Der hier dargestellte Code funktioniert einmal, dann wieder nicht und zwar werden irgendwelche "komischen" Zeichen an die Zeichenkette angehängt. 2.) Wie kann ich die Einträge sie sich im Array pllist[] das vom Typ char* ist nach dem ABC ordnen? Besten Dank im Vorraus Rain
Klotzkopp Geschrieben 12. Februar 2003 Geschrieben 12. Februar 2003 Originally posted by Rain char helpst[(l-4)];Du reservierst zuwenig Speicher für helpst. Du brauchst noch ein weiteres Byte für das Nullbyte, das bei C-Strings als Endmarkierung verwendet wird, das strlen aber nicht mitzählt. l-3 sollte es also tun. Außerdem ist es eine Eigenart von strncpy, dass diese Funktion das terminierende Nullbyte nicht setzt, wenn der zu kopierende String länger ist, als man angibt. Das ist bei dir immer der Fall, also musst du das letzte char von helpst selbst auf Null setzen. Wie kann ich die Einträge sie sich im Array pllist[] das vom Typ char* ist nach dem ABC ordnen?Von Hand, mit einem Sortieralgorithmus deiner Wahl. Falls du C++ verwenden kannst, würde ich aber empfehlen, aus dem Array von char* einen std::vector<std::string> zu machen. Damit bist du nicht nur deine ganzen Probleme mit Arrays und Zeigern los, sondern kannst auch über std::sort komfortabel sortieren.
nic_power Geschrieben 12. Februar 2003 Geschrieben 12. Februar 2003 Hallo, Oder - falls man keine Lust auf eine Selbstimplementierung hat - mit der folgenden Bibliotheksfunktion: void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)); @Rain: Du solltest such noch berücksichtigen, dass Deine Strings unter Umständen kürzer als vier Zeichen sein können. Oder ist das ausgeschlossen? Nic
maxim_42 Geschrieben 12. Februar 2003 Geschrieben 12. Februar 2003 Geht sowas wie char helpst[(l-4)]; überhaupt? Muss da nicht dynamisch Speicher angefordert werden? l steht doch erst zur Laufzeit fest, oder?
nic_power Geschrieben 12. Februar 2003 Geschrieben 12. Februar 2003 Ja, geht. Die Diskussion hatten wir schon mal vor einiger Zeit: http://www.fachinformatiker-world.de/forums/showthread.php?s=&threadid=34906&highlight=stack Nic
maxim_42 Geschrieben 12. Februar 2003 Geschrieben 12. Februar 2003 Interessant, man lernt nie aus: Danke für die Auskunft.
Rain Geschrieben 12. Februar 2003 Autor Geschrieben 12. Februar 2003 @Klotzkopp Danke für deine informative Antwort. Werde deine Tipps versuchen nun umzusetzen . Rain
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden