对stricmp的未定义引用

对stricmp的未定义引用,c,arrays,file,replace,char,C,Arrays,File,Replace,Char,我正在尝试创建一个方法来查找并替换字符串中的字符串,但在编译时似乎出现了一些错误。能帮我弄清楚到底发生了什么事吗 void replaceString(char *find, char *replace) { int len_string,i; char temp[30]; len_string=strlen(find); while(1) { for(i=0;i<len_string;i++) temp[i]=fgetc(edit)

我正在尝试创建一个方法来查找并替换字符串中的字符串,但在编译时似乎出现了一些错误。能帮我弄清楚到底发生了什么事吗

void replaceString(char *find, char *replace)
{
    int len_string,i;
    char temp[30];
    len_string=strlen(find);
    while(1)
    {
        for(i=0;i<len_string;i++) temp[i]=fgetc(edit);
            temp[i+1]=NULL;
        /* the stricmp() is used for comparing both string. */
        if(stricmp(find,temp)==0)
        {
            fprintf(edit,"%s ",replace);
            fclose(edit);
            exit(1);
        }
        fseek(edit,-(len_string-1),1);
    }       
}
void replaceString(char*find,char*replace)
{
内弦长,i;
煤焦温度[30];
len_string=strlen(find);
而(1)
{

对于(i=0;i
stricmp
是Windows特定的。如果您不在Windows上,
stracecmp
实际上,错误发生在链接时,而不是编译时。您的代码被编译为一个对象文件,希望在与其他找不到的对象文件链接时找到stricmp的实现。因此出现错误:“对stricmp的未定义引用”。正如bmargulies指出的,该实现仅在Windows库中可用。您可以切换到stracecmp()如果您使用的是POSIX兼容系统。

不仅是特定于Windows的,而且特定于Microsoft的编译器/库。我认为您在其他Windows编译器中找不到它。Borland Turbo C也提供了此功能。
strncasecmp
也是
strnicmp
的等效替代品。