【課題3−7】 提出課題(3) 次のプログラムは,文字列"uraniwaniwa niwa niwaniwa niwa niwatorigairu"の中に,文字列"niwa"が何個含まれているが調べるものである. 下の空欄A〜Dを埋めよ. #include #include int main(void) { char str[] = "uraniwaniwa niwa niwaniwa niwa niwatorigairu"; char search[] = "niwa"; int str_len, search_len; int i, cnt = 0; str_len = strlen(str); search_len = strlen(search); i = 0; while (i <=「    A    」) { if (strncmp(「 B 」, search, search_len) == 0) { 「 C 」; i += 「  D  」; } else i++; } printf("str contains %d ¥"%s¥"s.¥n", cnt, search); return 0; } 【実行結果】 str contains 7 "niwa"s. 【解説とヒント】 文字列の個数を数える手順は次の通り 1)文字列が一致するまで,i++しながらstrncmpで比較. 2)文字列が一致したらcnt++ 3)i += search_lenで,一致文字列の先にiを進める 4)最後のsearch_len-1文字は,比較する必要はない. strncmp関数:文字列の比較 形式:int strncmp(const char *s1, const char *s2, size_t n); 機能:文字列*s1と文字列*s2を先頭からn文字比較する.'¥0'以降の比較は行わない. 返値:辞書順の大小関係を比較し,s1 > s2で正の値,s1 < s2で負の値,s1 = s2で0を返す.