胡作非爲我有這樣的代碼:STRCMP 2個相同的字符串
#include <stdio.h>
#include <string.h>
int main() {
char s1[50], s2[50];
printf("write s1:\n");
fgets(s1, sizeof(s1), stdin);
printf("s2:\n");
fgets(s2, sizeof(s2), stdin);
printf("The concatenation of the two strings: %s\n", strcat(s1, s2));
if(strcmp(s2, s1) < 0) {
printf("s2 is shorter than s1.\n");
} else if(strcmp(s2, s1) > 0) {
printf("s2 is longer than s1.\n");
} else {
printf("strings are equal.\n");
}
return 0;
}
的問題是,當我寫2個像ABC或任何相同的字符串,返回的strcmp「S2比S1更短。」
這是正常的輸出還是我做錯了什麼?如果是這樣,在哪裏?
或strcat使字符串不相等?可以做任何事情嗎?
謝謝
請參閱[strcmp](http://www.cplusplus.com/reference/cstring/strcmp/)部分的返回值。返回的值僅與第一個差異有關(與總長比較無關)。如果要比較字符串長度,請使用[strlen](http://www.cplusplus.com/reference/cstring/strlen/).. – amdixon
是的。 strcat在代碼中時返回一個非零數字。當我評論它,然後strcmp返回0 – zeeks
s1 =「abcabc」和s2 =「abc」,比較使得s2比s1短。 –