У меня вопрос, почему мой код не компилируется, когда я использую strcmpi. Я протестировал этот же код с помощью strcmp, и это сработало. Не уверен, почему это не работает.
вот ошибка компиляции, которую я получаю:
gcc -std=c99 strcmpi_test.c -o strcmpi_test
strcmpi_test.c: In function 'main':
strcmpi_test.c:15: warning: implicit declaration of function 'strcmpi'
strcmpi_test.c:30:2: warning: no newline at end of file
/tmp/cceKXLcn.o: In function `main':
strcmpi_test.c:(.text+0x50): undefined reference to `strcmpi'
collect2: ld returned 1 exit status
#include <stdio.h>
#include <string.h>
int main()
{
char name[10];
char name2[10] = "bob";
printf("what is your name : ");
fgets(name,10,stdin);
if(strcmpi(name,name2) == 1)
{
printf("name == %s name2 == %s your names are the same\n",name,name2);
} else {
printf("name == %s name2 == %s your names are NOT the same\n",name,name2);
}
return 0;
}
strcmpi
не является стандартной функцией. В Linux естьstrcasecmp
, который выполняет сравнение без учета регистра. - person M Oehm   schedule 27.08.2014<strings.h>
(обратите внимание на дополнительную букву S). В Linux он есть в<string.h>
, но в большинстве *BSD его нет. - person zwol   schedule 27.08.2014strcasecmp
, уделяя особое вниманиеRETURN VALUE
б> раздел. - person zwol   schedule 27.08.2014==1
, когда он также может быть, по вашей же цитате,==42
или даже странным числом==7912
? (Большой жирный совет: быть больше, чем .) (Я также только что понял, что вы тестируете весь неправильный случай, подсказка-подсказка) - person Jongware   schedule 28.08.2014