ある文字列aのなかに、文字列bがいくつ含まれているかカウントする関数を作っています。
c
1#include<stdio.h> 2 3int count_key(char a[],char b[]); 4int count = 0; 5int count_key(char a[], char b[]) { 6 7 for (int i = 0; a[i] != '\0'; i++) { 8 if (a[i] == b[i]) { 9 count++; 10 } 11 else { 12 //NR 13 } 14 } 15 16 return count; 17} 18int main(void) { 19 printf("Please input some letters.\n"); 20 21 char input[200]; 22 char search[20]; 23 scanf("%s", input); 24 25 printf("Please input some words you want to find.\n"); 26 27 scanf("%s", search); 28 29 count_key(input, search); 30 31 printf("文字列%sは%d個含まれています。\n", search, count); 32 33 return 0; 34}
このようなコードを作ったのですが、配列と文字列の関係がよく分かっていないため、質問させていただきたいことが2つあります。
➀8行目のコードは、文字列bを構成している1文字ずつと一致する文字を文字列aから探していることにならないのでしょうか。例えば文字列inputに
youareyouyouareyou
と入力し、文字列search にyouを入力したら、
このコードだと、文字yが何個含まれているか探すことにならないのでしょうか。
➁上の例で実行してみた結果文字列youは3個含まれると表示されました。文字列aに何個youを入力しても実行結果はいつも3個です。なぜでしょうか。どう直したらよいのかも教えていただきたいです。
よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー