Veröffentlicht 11. Februar 200322 j 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
12. Februar 200322 j 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.
12. Februar 200322 j 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
12. Februar 200322 j Geht sowas wie char helpst[(l-4)]; überhaupt? Muss da nicht dynamisch Speicher angefordert werden? l steht doch erst zur Laufzeit fest, oder?
12. Februar 200322 j 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
12. Februar 200322 j @Klotzkopp Danke für deine informative Antwort. Werde deine Tipps versuchen nun umzusetzen . Rain
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.