int main()
{
cout<<"Enter a word"<<endl;
char word1[]={0}; //first char array initialization
cin>>word1;
cout<<"Enter another word"<<endl;
char word2[]={0}; //second char array initialization
cin>>word2;
char word3[]={0};
char word4[]={0};
int i=0;
while (word1[i]!='\0') //this converts both words to lower case by usinction tolower
{
word3[i]=char(tolower(word1[i])); //word3 and word4 stores the new arrays
word4[i]=char(tolower(word2[i]));
i++;
}
int output; //output stores the value of 0,1 or -1
output=compareString(word3,word4);
if (output==0)
{
cout<<"The two words are the same."<<endl; //if arrays are same
}
if (output==1)
{
cout<<"the 1st character of 1st word has a larger value than of 2nd word."<<endl;
}
if (output==-1)
{
cout<<"the 1st character of 2nd word has a larger value than of 1st word."<<endl;
}
return 0;
int compareString(char string1,char string2)
{
int size1=0; //initialize size of string1
int j=0; //string1 position initialize
while (string1[j]!='\0') //loop to determine size of string1
{
size1+=1;
j+=1;
}
int a=0; //initialize size of string2
int size2=0; //string2 position
while (string2[a]!='\0') //loop determines size of string2
{
size2+=1;
a+=1;
}
int i=0;
int k=0;
for (i=0;i<size1;i++) //loop to compare the two strings
{
if (string1[i]!=string2[i])
{
if (string1[i]>string2[i]) //comparing 1st character of string1 & string2
{
return 1;
}
else //if string2's first character is greater in value
{
return -1;
}
}
else
{
k++; //incrementing k when character of string1 matches string2 character
}
}
if (k==size1) //to cjheck if all characters of both strings are same
{
if (k==size2)
{
return 0;
}
}
}
這是比較兩個字符數組,並返回0,如果字符對應於彼此的函數,如果字符串2的第一個字符是比值,並返回字符串2的第一個字符,則返回1如果string1的第一個字符小於string2的第一個字符,則爲-1。問題是,當我運行它時,即使兩個單詞不同,輸出始終爲0,並且文本「單詞相同」出現。 我是否在我的主程序中正確初始化了兩個數組?或者是否存在其他一些問題?
爲什麼你沒有給出char數組的大小? – goji
你的數組是一個元素。如果可以的話,使用'std :: string'。不是爲了殺死函數的這一點,而是它有一個「比較」函數,它可以像==和>這樣的特定運算符。 – chris
@Troy,如果您提供了初始化程序列表,它會推導出大小。 – chris