C言語で文字列の最後から文字を検索するには string.h の strrchr 関数を使用します.
#include <string.h>
char *strrchr( const char *s, int c );
strrchr 関数は,s が指す文字列の後ろから,文字 c を検索する関数です.
strrchr 関数は,文字が見つかったときには探し出した文字へのポインタを返し,文字が見つからなかったときには空ポインタ (NULL) を返します. 探し出した文字へのポインタから文字列の先頭アドレスを引くことで,指定した文字が最後に現れる位置を求めることができます.
strrchr 関数を使用して文字列の最後から文字を検索するサンプルプログラムを以下に示します.
/* header files */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* main */
int main(void) {
char s[] = "I don't want to march as much as possible.";
char *ret;
int c;
puts("文字を入力してください.");
c = getchar();
/* s が指す文字列に c があるか? */
if ((ret = strrchr(s, c)) != NULL ) {
printf("'%c'が一番最後に見つかった位置は%d番目です.\n",
c, ret - s);
} else {
printf("'%c'はありませんでした.\n", c);
}
return EXIT_SUCCESS;
}
サンプルプログラムの実行結果は以下のようになります.
文字を入力してください. ( I を入力 ) 'I'が一番最後に見つかった位置は0番目です. 文字を入力してください. ( a を入力 ) 'a'が一番最後に見つかった位置は30番目です. 文字を入力してください. ( z を入力 ) 'z'はありませんでした.
たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.
C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります.
オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.
ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.