letztes Zeichen eines char
-
Hallo
ich habe eine Funktion die eine pointer auf eine char bekommt.
int test (char* myChar) { }
wie kann ich auf das letzte Element von myChar zugreifen und prüfen ob es eine 'z' ist?
Würde mich über Hilfe freuen.
-
Da mir hier so oft geholfen wird, will ich mich nun auch mal versuchen...
@OP: Du kannst einfach das CharArray durchlaufen mit einer for-Schleife
und wenn du ein '\0' am Ende des Arrays findest, dann dekrementierst du
den Zeiger auf das Array einmal und prüfst auf 'z'.MfG ::john::
-
john schrieb:
Da mir hier so oft geholfen wird, will ich mich nun auch mal versuchen...
@OP: Du kannst einfach das CharArray durchlaufen mit einer for-Schleife
und wenn du ein '\0' am Ende des Arrays findest, dann dekrementierst du
den Zeiger auf das Array einmal und prüfst auf 'z'.MfG ::john::
Hmm, hab mir jetzt sowas zusammen gebaut:
char *ptr; ptr = strrchr(myChar,'\0'); ptr--; if (strcmp(ptr, "/") == 0) {}
ist das so sauber, oder gibts da noch etwas schöneres
-
john schrieb:
Da mir hier so oft geholfen wird, will ich mich nun auch mal versuchen...
@OP: Du kannst einfach das CharArray durchlaufen mit einer for-Schleife
und wenn du ein '\0' am Ende des Arrays findest, dann dekrementierst du
den Zeiger auf das Array einmal und prüfst auf 'z'.MfG ::john::
Eine For-Schleife ist in diesem Fall nicht so sinnvoll. Stattdessen würde ich eine While-Schleife empfehlen. Trotzdem wäre das nicht sonderlich elegant, da man das Problem ganz einfach mit strlen lösen kann.
Hier main ein Beispielcode. Ich habe beide Lösungen angegeben:
#include <stdio.h> #include <string.h> // Elegante Lösung mit strlen int testFunc1(char *str) { // Ermittlung des letzten Zeichens char lastChar = str[strlen(str) - 1]; // Ausgabe printf("Eingabe: %s\n", str); printf("Letztes Zeichen: %c\n", lastChar); return 0; } // Lösung mit Schleife int testFunc2(char *str) { char lastChar; int pos = 0; // Ermittlung der Position while (*str++) { pos++; } // Zeiger wieder zurücksetzen str -= pos + 1; // Ermittlung des letzten Zeichens lastChar = str[pos - 1]; // Ausgabe printf("Eingabe: %s\n", str); printf("Letztes Zeichen: %c\n", lastChar); return 0; } int main() { char theChar[] = "Hallo, Welt"; testFunc1(theChar); testFunc2(theChar); }
-
cchar schrieb:
john schrieb:
Da mir hier so oft geholfen wird, will ich mich nun auch mal versuchen...
@OP: Du kannst einfach das CharArray durchlaufen mit einer for-Schleife
und wenn du ein '\0' am Ende des Arrays findest, dann dekrementierst du
den Zeiger auf das Array einmal und prüfst auf 'z'.MfG ::john::
Hmm, hab mir jetzt sowas zusammen gebaut:
char *ptr; ptr = strrchr(myChar,'\0'); ptr--; if (strcmp(ptr, "/") == 0) {}
ist das so sauber, oder gibts da noch etwas schöneres
Was hast du denn konkret vor?
-
Das strrchr ist mir nicht bekannt gewesen, ich habe allerdings Google entnehmen können, das dies zum Auffinden des letzen Vorkommens eines Zeichens in einem String dient. Code kann ich nicht so gut einschätzen, da ich selbst noch Neuling bin, außer dem if, dass würd ich so machen:
if( *ptr == 'z' ){ // mach was draus... }
MfG ::john::
-
Mist..
1. zu spät
2. nicht die Idee mit strlen() gehabt
-
Wenn du dir eine Funktion schreiben willst, die überprüft, ob am Ende eines Strings ein / steht, dann kannst du das übrigens als Einzeiler lösen!
int checkStr(char *str) { return str[strlen(str) - 1] == '/'; }