絶対あるよねこんな関数

 文字列 ss から文字 c の最後の位置を見つけ、それ以降を切り出す関数。文字 c が見つからなければ-1を返す。

 c言語の勉強中、必要になったので作ってみました。

 改善点等がありましたら容赦なくお願いします。でも難しいことは(分からないから)言わないでね! 出来れば噛み砕いて言ってもらえると助かります。


 以下使用例

#include 
#include

int StrLastChr(char ss[], char c)
{
int i;
int n = -1;

for (i = strlen(ss); i >= 0; --i) {
if (ss[i] == c) {
n = i;
break;
}
}

if (n >= 0)
for (i = 0; ss[i] = ss[(n + 1) + i]; i++)
;

return n;
}

int main(void)
{
int position;
char today1[] = "2009/07/21 (Tue)",
today2[] = "2009-07-21 (Tue)",
slash[] = "//////////";

position = StrLastChr(today1, '/');
printf("/ 以降の文字列:%s\n"
"/ の最後の位置:%d\n\n"
, today1, position);

position = StrLastChr(today2, '/');
printf("/ 以降の文字列:%s\n"
"/ の最後の位置:%d\n\n"
, today2, position);

position = StrLastChr(slash, '/');
printf("/ 以降の文字列:%s\n"
"/ の最後の位置:%d\n"
, slash, position);

return 0;
}


 出力結果

/ 以降の文字列:21 (Tue)
/ の最後の位置:7

/ 以降の文字列:2009-07-21 (Tue)
/ の最後の位置:-1

/ 以降の文字列:
/ の最後の位置:9