"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

chr() in C?

MarS919 08.02.2002 - 11:54 1444 19
Posts

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
naja, um einen string bzw. ein zeichen in einem string zu lokalisieren, wird idR die funktion strstr verwendet. kurzer auszug aus der definition von strstr:

strstr
Synopsis
#include <string.h>
char *strstr(const char *s1, const char *s2);

Description
The strstr function locates the first occurrence in the string pointed to by s1 of the sequence of characters (excluding the terminating null character) in the string pointed to by s2.

Returns
The strstr function returns a pointer to the located string, or a null pointer if the string is not found. If s2 points to a string with zero length, the function returns s1.

ich hoffe das hilft dir weiter.
mfG manalishi :fresserettich:

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von MarS919
Mein erlaubter Zeichensatz (müssen wir verwenden) ist ein einziger String. Ich muss jetzt mit dem ASCII-Wert jedes einzelnen Zeichens erfahren, an wievielter Stelle (Index) das Zeichen im Zeichensatz steht. Mit diesem Wert kann ich dann in der Verschlüsselung weiterrechnen. Nur: diesen Wert krieg ich nicht, ich weiß einfach nicht, wie.

Wenn s ein String ist, dann ist s[x] das Zeichen an Stelle x (mit 0 beginnend). Um ein Zeichen zu suchen, gibt es die Funktion strchr. Wenn du den Index haben willst, dann:

Code:
char text[] = "ABC";
char charset[] = "EDCBA";
int len = strlen(text);
for (int i = 0; i < len; i++) {
  char *p = strchr(charset, text[i]);
  if (p)
    int index = p - charset;
}
Bearbeitet von that am 09.02.2002, 00:32

MarS919

Little Overclocker
Avatar
Registered: Oct 2001
Location: Wr. Neustadt
Posts: 120
Zitat von that
Zitat von skawars
dh i kann morgn gscheid saufn, weil i am sonntag den kater sowieso net mehr erleb :)

Danke, aber was machst du in der fettgedruckten Zeile?

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von MarS919
Danke, aber was machst du in der fettgedruckten Zeile?

strchr liefert einen Pointer auf das gefundene Zeichen. Du willst aber den Index. Der Index ist also die Adresse des gefundenen Zeichens abzüglich der Adresse des Anfangs des Strings.

MarS919

Little Overclocker
Avatar
Registered: Oct 2001
Location: Wr. Neustadt
Posts: 120
Funzt hervorragend, vielen Dank.
Habe keine Fragen mehr. :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz