BohYoh.comトップページへ

C言語によるアルゴリズムとデータ構造

戻る  

演習8-5の解答

 strrchr関数と同じ動作をする以下の関数を作成せよ。
  char *str_rchr (const char *s , int c );

/* 演習8-5 文字列からの文字の末尾からの探索(標準ライブラリstrrchr関数と同じ仕様) */ #include <stdio.h> /*--- 文字列sから文字cを末尾側から探索 ---*/ char *str_rchr(const char *s, int c) { const char *p = NULL; /* 出現位置 */ c = (char)c; while (1) { if (*s == c) /* 見つけた */ p = s; if (*s == '\0') /* 走査終了 */ break; s++; } return ((char *)p); } int main(void) { char str[60]; /* この文字列から探索 */ char tmp[60]; int ch; /* 探す文字 */ char *idx; printf("文字列を入力してください:"); scanf("%s", str); printf("探す文字は:"); scanf("%s", tmp); /* いったん文字列として読み込んで */ ch = tmp[0]; /* その最初の文字を探索文字とする */ if ((idx = str_rchr(str, ch)) == NULL) /* 先頭の出現を探索 */ printf("文字'%c'は文字列中に存在しません。\n", ch); else printf("文字'%c'は%d文字目に存在します。\n", ch, idx - str + 1); return (0); }


戻る