C言語プログラミング 初心者
現在2つの文字列を比較するstrcmp()関数と同じ動作をするプログラムを制作しています。
もちろん、strcmp()は一切用いません。
何とか作ってみたものの、文字列が等しいときなどにはうまく作動しません。
分かる方アドバイスお願いします。
以下のプログラムでは2つの50文字以下の文字列を入力することを想定しています。
#include<stdio.h>
int main(void)
{
char str1[50],str2[50];
int a,b,i;
printf("第1の文字列を入力してください: ");
gets(str1);
printf("第2の文字列を入力してください: ");
gets(str2);
/*文字列の長さを確認します*/
for(a = 0;str[a];a++)
;
for(b = 0;str2[b];b++)
;
printf("%s ha %d mozinonagasadesu\n",str1,a);
printf("%s ha %d mozinonagasadesu\n",str2,b);
/*文字列を比較します*/
for(i = 0;;i++){
if(str1[i] > str2[i])
printf("%s は %s より大きい\n"str1,str2);
else if(str1[i] < str2[i])
printf("%s は %s より小さい\n"str1,str2);
if(str1[i] > str2[i] || str1[i] <str2[i])
break;
}
for(i=0;str1[i] && str2[i];i++)
if(str1[i] == str2[i] )
printf("文字列は等しい\n");
/*上のプログラミングだとstr1がaab、str2がaacのときも文字列が等しいと表示してしまうので、ぴったり等しいときのみ表示するにはどのように条件付けしたらよいでしょうか?*/
return 0;
}
ちなみにstr1[0]=a ,str1[1]=b, str2[0]=a, str[1]=b, str[2]=cが格納されていた場合、str1 < str2になると思うのですが正しいでしょうか?
もし正しければこの場合str1[2]にはヌル文字が入っており、それがstr2[2]のcと比較されたためなのでしょうか?
いろいろと質問してしまいましたが、分かる方解答お願いします。
補足
はじめそう思って if !((str1.getText()).equals(str2)){ にしたんですが、コンパイル時に '('がありません。 になるんです。。。