Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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.

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

Geht sowas wie

char helpst[(l-4)];
überhaupt?

Muss da nicht dynamisch Speicher angefordert werden?

l steht doch erst zur Laufzeit fest, oder?

Interessant, man lernt nie aus:

Danke für die Auskunft.

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.