2016-03-27 12 views
0

Yani iki dizgiyi karşılaştırıyorum ve kodum yapması gereken şeyin tam tersini yapıyor. Printf ifadelerimi açamıyorum çünkü bu da yanlış olur. Uzunluğa 5 sahip birinci dizgiyi ve uzunluğu 6 olan ikinci dizeyi girersem, tam tersi olduğunda dize 1'in dize 2'den daha büyük olduğunu söyler.C kodumdaki ifadeler koşulların tam tersini yapıyor mu?

#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 uzunluğu karşılaştırmaz: alfabetik sıralama düzenini karşılaştırır. – slim

cevap

1

strcmp dizeleri uzunlukları karşılaştırmak değildir: Burada
ben ne var. Karakterleri, aynı olmayan iki tane buluncaya kadar karşılaştırır, sonra hangi dizenin daha önce alfabede karaktere sahip olduğuna bağlı olarak bir negatif veya pozitif sayı döndürür. Bir dize biterse ("Merhaba" ve "Cehennem") o zaman daha kısa olanı gelir. Ve eğer özdeşlerse, sonuç 0'dır.

Örneğin, xyz ">" abcde "çünkü x sonra gelir.

0

Strcmp dizeleri alfabetik sıraya göre karşılaştırır. Dizelerin uzunluğunu karşılaştırmak için strcmp() öğesini strlen() ile değiştirin.

İlgili konular