プロが教える店舗&オフィスのセキュリティ対策術

c言語の問題を教えてほしいです。
文字列の比較を考える。2 つの文字列を引数として、それらが先頭から k 文字同じとき、k の最大値を返す 関数 int strnsame(char str1[], char str2[]) を作成し、キーボードから 2 つの (空白類を含まない 32 文字未満の) 文字列を入力させ、先頭から高々何文字まで同じかを表示するプログラムを作成せよ。
(例;”informal”と”information”を入力すると、7 が表示される。”informal”と”formal”では 0。)という問題です。よろしくお願いいたします。

A 回答 (2件)

ちなみにこれは半角ローマ字だけでいいのですか?それとも実は全角文字も含めるのですか?



#include<stdio.h>

int strnsame(char str1[], char str2[]);

int main(void)
{
char moji1[32];
char moji2[32];

printf("Enter the words within 32 words and press Enter button.\tmoji1 = ");
scanf(" %31[^ \n]%*[^\n]",moji1);
printf("\nEnter the words within 32 words and press Enter button.\tmoji2 = ");
scanf(" %31[^ \n]%*[^\n]",moji2);

int k = strnsame(moji1, moji2);
printf("The number of the same letters is %d",k);
}

int strnsame(char str1[], char str2[])
{
int k = 0;
for(k=0;str1[k] == str2[k] && str1[k] != '\0' && str2[k] != '\0';k++);

return k;
}
    • good
    • 0
この回答へのお礼

半角ローマ字だけでいいです!ありがとうございます!

お礼日時:2021/06/26 10:27

ループの中で、str1[i] と str2[i] を比較して、一致したら k++、一致しなかったら、その時のkを返す関数を作れば良いと思います。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!