二つの文字列を入力して、異なる文字の個数を求めるプログラムを、文字列の標準関数を使うとどのように書き表せますか。
実行例は以下のようにしたいです。
文字列1を入力してください:ABCDEFGH
文字列2を入力してください:ABDJELGI
文字列 ABCDEFGH と文字列 ABDJELGI の相違は4文字です。
文字列1を入力してください:ABCDEFGH
文字列2を入力してください:ABDJELG
同じ長さの文字列を入力してください。
異なる文字の個数
Re:異なる文字の個数
単純に、頭から順番に見ていけばいいだけでは?
文字列の違う箇所の数を返す関数です。
[追記]
>文字列1を入力してください:ABCDEFGH
>文字列2を入力してください:ABDJELG
>同じ長さの文字列を入力してください。
思いっきり読み飛ばしてました。
でもこのコードでも、問題なく要求通りに動きます。
文字列の違う箇所の数を返す関数です。
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:異なる文字の個数
サンプル作ってみました。
時間かかりすぎた…。文字関連はやっぱり苦手です。。
#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;
}
時間かかりすぎた…。文字関連はやっぱり苦手です。。
#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;
}