Zum Inhalt springen

Zeichenketten abschneiden


Empfohlene Beiträge

Geschrieben

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

Geschrieben
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.

Geschrieben

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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...