对stricmp的未定义引用

时间:2011-05-07 02:09:18

标签: 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);
            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);
    }       
}

我在编译时得到的错误是对stricmp的未定义引用。 我知道这不是正确的编码约定,但编辑(FILE类型的对象)当前是一个全局变量。

2 个答案:

答案 0 :(得分:26)

stricmp是特定于Windows的。如果您不在Windows上strcasecmp

答案 1 :(得分:3)

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