2017-02-05 3 views
0

Мне нужно получить последний символ из строки. Скажем, строка выглядит следующим образом:Получение маркера между двумя разными разделителями

blue;5 

Я думал, что я мог бы использовать StrLen, а затем просто вычитать на 1, чтобы получить 5. Я пробовал кучу разных способов, но ни один из них не работает. Так я и полагаю, что это должно выглядеть или делать, но я знаю, что он не работает. Какие-либо предложения? Это мой код-псевдокод. Я знаю, что это не работает по целому ряду причин, но это своего рода поток, который я имел в виду.

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

В стандартном C. [много хороших строковых функций] (http://en.cppreference.com/w/c/string/byte). Некоторые из них могут [помочь вам найти определенные символы в строке] (http: //en.cppreference.com/w/c/string/byte/strchr). –

+0

Что касается проблемы с использованием 'strlen', подумайте о том, что' Input [len - 1] 'actual * is *. –

+0

Ваше название очень сильно отличается от того, что вы просите здесь. – usr2564301

ответ

0
len = strlen(Input); //ok 

Здесь вы ошибаетесь. Помещение символа в целое число неверно. Ты нуждаешься в этом.

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

ли это как

Position = strlen(Input) - 1 //correct 

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

Собственно, 'strcpy' нуждается в указателе в качестве второго аргумента. Вы передаете ему символ. –

+0

Oops @Paul Ogilvie thanx :) – minigeek

0

Если вы действительно хотите, последний символ, то вы можете использовать strlen(), но не так, вместо того, как этот

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

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

отмечают, что last не является строкой, но один символ, который в свою очередь, значение ascii для последнего символа в string, вы можете распечатать его представление, используя спецификатор "%c"printf().

0

@Iharob уже отправил некоторый код, который позволяет получить доступ к последнему символу как характера. Но если вы хотите строку, вы можете сделать это , потому что это в конце концов, и так NUL концевым:

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

Обратите внимание на «% s» - lastword является «строка», а не символ , Это всего лишь строка, длина которой составляет одну букву.

+1

... так что 'printf ("% c ", * lastword);' также будет работать. –

0

Вы ближе к решению, чем вы думаете:

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

strcpy нужен указатель на последний символ.

Смежные вопросы