2017-02-05 3 views
0

文字列の最後の文字を取得する必要があります。文字列は次のようになりますと言う:私は考えていた2つの異なるデリミタ間でトークンを取得

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)があります。[文字列内の特定の文字を見つけるのに役立つ] //en.cppreference.com/w/c/string/byte/strchr)。 –

+0

'strlen'を使用する際の問題は、' Input [len - 1] 'が実際に*何であるかを考えてください。 –

+0

あなたのタイトルはあなたがここで聞いているものとはまったく異なります。 – usr2564301

答えて

0
len = strlen(Input); //ok 

ここで間違っています。文字を整数にするのは間違っています。あなたにはこれが必要です。

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

Position = strlen(Input) - 1 //correct 

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

実際、 'strcpy'は第2引数としてポインタを必要とします。あなたはそれをcharに渡す。 –

+0

Oops @Paul Ogilvie thanx :) – minigeek

0

あなたは本当に、あなたが代わりにlastは、文字列が、順番にある単一の文字ではないことを、この

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

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

ノートのように、そのようstrlen()を使用することはできませんが、最後の文字が必要な場合最後の文字のascii値はstringです。"%c"printf()指定子を使用して表現できます。

0

としてそれを実行してください@Iharobは、すでにあなたが文字として最後の文字にアクセスすることができますいくつかのコードを掲載しています。しかし、あなたは文字列をしたい場合、それは終わりであり、そのためNULで終了するので、あなたがこのを行うことができます。

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

ノート「%s」は - lastwordは「文字列」、ではない文字です。それは1文字長い文字列です。

+1

... 'printf("%c "、* lastword);'も有効です。 –

0

あなたが思うより解に近い:

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

最後の文字へのポインタを必要とstrcpy

関連する問題