2011-09-04 50 views
0

有人有此功能的源代码吗?我认为它在Unix下可用,但我使用的是Windows。strncasecmp()函数的源代码


当然我试图谷歌第一,但还没有找到解决方案,还起到从“strncasecmp.c”需要的仅2而不是3个参数。

无法提供更多信息,因为它不是我的代码。

那就是他如何使用它:

int _tcsnicmp(const char *c1, const char *c2, int l) { return strncasecmp(c1,c2,l); } 
+0

...搜索 “strncasecmp.c” – Mat

+2

'strncasecmp'是'C'功能,不'C++'。请尝试更适当的标签。 –

回答

5

编辑后你更新你的问题,它看起来像你从什么做一个补丁包,即原来是为Windows编写的,而不是移植到UNIX,现在回到Windows?! _tcsnicmp实际上是在Windows上调用的函数(请参阅上面的链接)。在Windows上重定向到strncasecmp(或您自己的版本)没有任何意义。

在Windows下(至少使用微软编译器,这个平台并不是真正的问题),你可以使用strnicmp family of functions来代替。如果您仍然需要源代码,可以使用google代码,就像其他人所建议的一样,或者查看随Visual Studio一起分发并安装在“\ VC \ crt \ src”下的CRT源代码。

2

我发现它here

#include <string.h> 
#include <ctype.h> 

int 
_DEFUN (strncasecmp, (s1, s2, n), 
    _CONST char *s1 _AND 
    _CONST char *s2 _AND 
    size_t n) 
{ 
    if (n == 0) 
    return 0; 

    while (n-- != 0 && tolower(*s1) == tolower(*s2)) 
    { 
     if (n == 0 || *s1 == '\0' || *s2 == '\0') 
    break; 
     s1++; 
     s2++; 
    } 

    return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2); 
} 
0

如果安装了Visual C++,CRT源代码位于安装目录中。

下面这个目录:(路径到Visual Studio安装)\ VC \ CRT \ SRC

看看这个目录中(所有* cmp.c文件如wcsnicmp.c,strnicmp.c等。 ..)

4
#define strncasecmp(x,y,z) _strnicmp(x,y,z) 
+2

请说明您的代码的作用以及它如何回答问题。如果你得到一个代码片段作为答案,你可能不知道如何处理它。回答应该给OP和未来访问者指导如何调试和解决他们的问题。指出你的代码背后的想法,对于理解这个问题以及应用或修改你的解决方案有很大的帮助。 – Palec