strcmp не работает в моем коде
У меня проблема с strcmp в моей программе.
я пытаюсь сравнить две строки по их длине, поэтому я использую для этого strcmp(), но когда я сравниваю их в своем операторе if, это не работает.
Разве strcmp не сравнивает длину строк?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char a[30],b[30],c[30];
strcpy(a,"computer");
strcpy(c,"science");
strcpy(b,a);
puts(a);
puts(c);
puts(b);
if(strcmp(a,b)==0)
printf("a=b\n");
if(strcmp(a,c)<0)
printf("a<c\n");
if(strcmp(a,c)>0)
printf("a>c");
strcat(a,c);
puts(a);
getch();
return 0;
}
2 ответа
strcmp
сравнивает строки лексикографически (для строк, составленных из букв в одном и том же регистре, это то же самое, что сравнивать их по алфавиту). Следовательно, "computer"
меньше, не больше, то "science"
потому что это раньше по алфавиту.
Если вы хотите сравнить длины двух строк, а не сравнивать сами строки, вы должны использовать strlen
:
if(strlen(a) == strlen(b))
printf("a=b\n");
if(strlen(a) < strlen(c))
printf("a is shorter than c\n");
if(strlen(a) > strlen(c))
printf("a is longer than c");
strcmp
сравнивает строки на основе их лексикографического порядка, который напоминает порядок слов в словаре. По этому порядку строка "science"
больше, чем "computer"
, Это не правда, что strcmp
сравнивает строки на основе их длины.
strcmp
рассматривать str1
меньше, чем у str2
если любое из следующего верно;
Первый
i
персонажиstr1
а такжеstr2
матч, но(i+1)
St характерstr1
меньше, чем у(i+1)
St характерstr2
,
Пример:abc
меньше, чем уabd
,Все персонажи
str1
матчstr2
, ноstr1
короче (по длине), чем уs2
,
Пример:abc
меньше чемabcd
,