Код (Text): #test.c int main (int argc, char *argv[]){ printf ("%d\n",strcmp (argv[1], "quit")); return 0; } Результат: Почему где встречается 's' возвращается 1? Это фигня, я файл приложил echoserver.c, так там quit и s обе возвращают 0 Почему?
Ну вообще сказал как отрезал... 'h' < 'q' < 's' - чего тут странного? Строки сравниваются в литеральном порядке. При этом, strcmp не обязана возвращать "нормализованные" значения - "-1", "0", "1". курим ман: Код (Text): SYNOPSIS #include <string.h> int strcmp(const char *s1, const char *s2); int strncmp(const char *s1, const char *s2, size_t n); DESCRIPTION The strcmp() function compares the two strings s1 and s2. It returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2. The strncmp() function is similar, except it only compares the first (at most) n characters of s1 and s2. RETURN VALUE The strcmp() and strncmp() functions return an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2.