2016-03-27 3 views
0

だから私は2つの文字列を比較していると私のコードは、何をすべきかとまったく逆のことをしています。私はprintfステートメントを入れ替えることができません。なぜならそれはまた間違っているからです。長さが5の最初の文字列と長さが6の2番目の文字列を入力すると、文字列1が文字列2より大きいと言うことができます。私のCコードのステートメントが条件の正反対のことをしているのですか?

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
int main(){ 
    char str1[100], str2[100]; 

     printf("enter the first string :"); 
     scanf("%s", &str1); 
     printf("enter the second string :"); 
     scanf("%s", &str2); 

    if(strcmp(str1,str2)==0){ 
     printf("the strings are equal\n"); 
    } 
    else if(strcmp(str1,str2)<0){ 
     printf("string 1 is less than string 2\n"); 
    } 
    else{ 
     printf("string 1 is greater than string 2\n"); 
    } 
    return 0; 
} 
+0

Strcmpは長さを比較しません。アルファベット順のソート順を比較します。 – slim

答えて

1

のstrcmpは、文字列の長さを比較しません。ここで
は、私が持っているものです。それは、同じでない2つの文字が見つかるまで文字を比較し、アルファベットの前の文字を含む文字列に応じて負または正の数を返します。 1つの文字列がなくなると(「こんにちは」対「地獄」)、次に短いものが最初に来る。そして、それらが同一である場合、結果は0です。

例えば、xがaの後に来るので、 "xyz"> "abcde"

0

Strcmpは、文字列をアルファベット順に比較します。 文字列の長さを比較するには、strcmp()をstrlen()に置き換えます。