У меня вопрос о том, почему мой код не будет компилироваться, когда я использую strcmpi. Я тестировал этот же код с помощью strcmp, и это сработало. Не знаю, почему это не работает.Код 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', что делает сравнение без учета регистра. –
@MOehm Правильно, но вы должны также упомянуть, что эта функция может быть объявлена только в '' (обратите внимание на дополнительный S). Linux имеет его в '', но большинство из * * BSD этого не делают. –
zwol
@ Zack: Хорошая точка; Я этого не знал. (Но я доверяю OP, чтобы найти функцию и где она объявлена, как только имя будет известно.) –