続いて練習2−5も
なんか最初、練習2−4も2−5も題意を間違って取ってしまっていて、ぜんぜんダメだなって思ってしまった。2−4は「文字列から文字列をくりぬく」と勘違いしたし、2−5は「文字列のなかで最初に文字列があるところ」と勘違いしてしまった。K&Rははっきり文字列と「文字」との比較って書いてあるのにね。
#include <stdio.h> /* 文字列s2の任意の文字と等しい文字列s1の最初の 文字位置を返す関数any(s1, s2)を書け。ただし、 一致する文字がなければ-1を返す。(標準ライブラリ 関数strpbrkは同じ働きをもつが、その位置への ポインタを返す。) */ int any(char *s1, char *s2) { int i, j; int s1_length = strlen(s1); int s2_length = strlen(s2); for (i = 0; i < s1_length; i++) { for (j = 0; j < s2_length; j++) { if(s1[i] == s2[j]) { return i; } } } return -1; }