異なる文字の個数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
かな

異なる文字の個数

#1

投稿記事 by かな » 15年前

二つの文字列を入力して、異なる文字の個数を求めるプログラムを、文字列の標準関数を使うとどのように書き表せますか。
実行例は以下のようにしたいです。

文字列1を入力してください:ABCDEFGH
文字列2を入力してください:ABDJELGI
文字列 ABCDEFGH と文字列 ABDJELGI の相違は4文字です。

文字列1を入力してください:ABCDEFGH
文字列2を入力してください:ABDJELG
同じ長さの文字列を入力してください。

へろりくしょん

Re:異なる文字の個数

#2

投稿記事 by へろりくしょん » 15年前

単純に、頭から順番に見ていけばいいだけでは?

文字列の違う箇所の数を返す関数です。
int getUnmatch(const char *str1, const char *str2)
{
    int i;
    int count = abs(strlen(str1) - strlen(str2));

    for(i = 0;str1 && str2;i++){
        if(str1 != str2) count++;
    }

    return count;
}



[追記]
>文字列1を入力してください:ABCDEFGH
>文字列2を入力してください:ABDJELG
>同じ長さの文字列を入力してください。

思いっきり読み飛ばしてました。

でもこのコードでも、問題なく要求通りに動きます。 画像

シエル

Re:異なる文字の個数

#3

投稿記事 by シエル » 15年前

strlenを使って文字数が違えば、「同じ長さの文字列を入力してください。」と表示し、
文字数が一致してれば、一つずつforループなどで見ていく。

シエル

Re:異なる文字の個数

#4

投稿記事 by シエル » 15年前

サンプル作ってみました。
時間かかりすぎた…。文字関連はやっぱり苦手です。。

#include <stdio.h>
#include <string.h>
#include <math.h>

int main(void)
{
char str1[40];
char str2[40];
char str3[40];
int len1,len2,dif,diflen=0;
int i=0;

printf("文字列1を入力して下さい\n");
scanf("%s",str1);
printf("文字列2を入力して下さい\n");
scanf("%s",str2);

len1=strlen(str1);
len2=strlen(str2);

dif=abs(len1-len2);

if(dif==0){
if(len1==0){
printf("一つ目の文字が入力されていません");
return -1;
}else if(len2==0){
printf("2つめの文字が入力されていません");
return -1;
}else{
printf("文字数が一致してるので比較を開始します…\n");
}
}else{
printf("同じ長さの文字列を入力してください。\n");
return -1;
}


for(i=0;i<len1+1;i++){
if(str1==str2){
continue;
}else{
str3[diflen]=str2;
diflen++;
}
}
str3[diflen]='\0';

printf("文字列%sと文字列%sの相違は%d文字です。\n",str1,str2,diflen);

printf("違う文字は「%s」になります\n",str3);

return 0;

}

閉鎖

“C言語何でも質問掲示板” へ戻る