有人有此功能的源代碼嗎?我認爲它在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++'。請嘗試更適當的標籤。 –