2017-02-05 5 views
0

Ich brauche das letzte Zeichen aus einer Zeichenfolge zu erhalten. Sagen Sie die Zeichenfolge wie folgt aussieht:immer ein Token zwischen zwei verschiedenen Trennzeichen

blue;5 

ich dachte ich könnte Strlen verwenden und dann subtrahieren nur um 1 den 5. ich ein paar verschiedene Möglichkeiten versucht haben, zu bekommen, aber keiner von ihnen arbeiten. Das ist die Art und Weise, wie ich denke, dass es aussehen oder tun sollte, aber ich weiß, dass es nicht funktioniert. Irgendwelche Vorschläge? Das ist eine Art meines Code-Pseudocodes. Ich weiß, dass es aus einer Vielzahl von Gründen nicht funktioniert, aber es ist der Fluss, den ich mir vorgestellt habe.

len = strlen(Input); 
Position = Input[len - 1]; 
strcpy(value, Input[Position]); 
+0

Es gibt [viele schöne String-Funktionen] (http://en.cppreference.com/w/c/string/byte) in Standard C. Einige, die kann (http [Hilfe Sie bestimmte Zeichen in einer Zeichenfolge finden]: //de.cppreference.com/w/c/string/byte/strchr). –

+0

Was das Problem mit der Verwendung von 'strlen' betrifft, denke darüber nach, was 'Input [len - 1]' eigentlich * ist *. –

+0

Ihr Titel ist sehr unterschiedlich von dem, was Sie hier fragen. – usr2564301

Antwort

0
len = strlen(Input); //ok 

Hier gehen Sie falsch. Ein Zeichen in Integer zu setzen ist falsch. Du brauchst das.

Position = Input[len - 1]; //incorrect 

Machen Sie es so

Position = strlen(Input) - 1 //correct 

strcpy(value, &Input[Position]);//ok 
+0

Eigentlich braucht 'strcpy' einen Zeiger als zweites Argument. Du gibst ihm einen Saibling. –

+0

Oops @ Paul Ogilvie thanx :) – minigeek

0

Wenn Sie wirklich das letzte Zeichen, dann können Sie strlen() verwenden, aber nicht so, anstatt wie diese

char string[] = "blue;5"; 
int position = strlen(string) - 1; 
char last = string[position]; 

printf("%c\n", last); 

beachten Sie, dass last kein String, sondern ein einzelnes Zeichen, das seinerseits der ASCII-Wert für das letzte Zeichen in string, können Sie es die Darstellung mit den "%c"printf() Spezifizierer drucken.

0

@Iharob hat bereits einige Code geschrieben, die Sie Zugriff auf das letzte Zeichen als Charakter lässt. Aber wenn Sie eine Zeichenfolge wollen, können Sie diese tun, weil es am Ende ist, und so NUL-terminiert:

const char * lastword = string + (strlen(string) - 1); 
printf("%s", lastword); 

Beachten Sie die ‚% s‘ - Lastword ist ein „string“, kein Zeichen . Es ist nur eine Zeichenfolge, die einen Buchstaben lang ist.

+1

... so 'printf ("% c", * Lastword);' würde auch. –

0

Sie sind näher an der Lösung, als Sie denken:

len = strlen(Input); 
    strcpy(value, &Input[len - 1]); // copy last character 

strcpy einen Zeiger auf das letzte Zeichen muss.

Verwandte Themen