有人有此功能的源代码吗?我认为它在Unix下可用,但我使用的是Windows。strncasecmp()函数的源代码
当然我试图谷歌第一,但还没有找到解决方案,还起到从“strncasecmp.c”需要的仅2而不是3个参数。
无法提供更多信息,因为它不是我的代码。
那就是他如何使用它:
int _tcsnicmp(const char *c1, const char *c2, int l) { return strncasecmp(c1,c2,l); }
有人有此功能的源代码吗?我认为它在Unix下可用,但我使用的是Windows。strncasecmp()函数的源代码
当然我试图谷歌第一,但还没有找到解决方案,还起到从“strncasecmp.c”需要的仅2而不是3个参数。
无法提供更多信息,因为它不是我的代码。
那就是他如何使用它:
int _tcsnicmp(const char *c1, const char *c2, int l) { return strncasecmp(c1,c2,l); }
编辑后你更新你的问题,它看起来像你从什么做一个补丁包,即原来是为Windows编写的,而不是移植到UNIX,现在回到Windows?! _tcsnicmp
实际上是在Windows上调用的函数(请参阅上面的链接)。在Windows上重定向到strncasecmp
(或您自己的版本)没有任何意义。
在Windows下(至少使用微软编译器,这个平台并不是真正的问题),你可以使用strnicmp family of functions来代替。如果您仍然需要源代码,可以使用google代码,就像其他人所建议的一样,或者查看随Visual Studio一起分发并安装在“\ VC \ crt \ src”下的CRT源代码。
我发现它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);
}
如果安装了Visual C++,CRT源代码位于安装目录中。
下面这个目录:(路径到Visual Studio安装)\ VC \ CRT \ SRC
看看这个目录中(所有* cmp.c文件如wcsnicmp.c,strnicmp.c等。 ..)
#define strncasecmp(x,y,z) _strnicmp(x,y,z)
请说明您的代码的作用以及它如何回答问题。如果你得到一个代码片段作为答案,你可能不知道如何处理它。回答应该给OP和未来访问者指导如何调试和解决他们的问题。指出你的代码背后的想法,对于理解这个问题以及应用或修改你的解决方案有很大的帮助。 – Palec
...搜索 “strncasecmp.c” – Mat
'strncasecmp'是'C'功能,不'C++'。请尝试更适当的标签。 –