2011-09-04 5 views
0

이 함수에 대한 소스가 있습니까? 유닉스에서는 사용할 수 있다고 생각하지만, Windows를 사용하고 있습니다. "strncasecmp.c는"단지 2 대신 3의 매개 변수를 사용에서 내가 처음 구글 시도했지만 해결책을 발견하지 않았습니다 물론strncasecmp() 함수의 소스 코드


도 작동합니다.

내 코드가 아니기 때문에 더 많은 정보를 제공 할 수 없습니다. 그가 그것을 사용하는 방법

는 :

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

... "strncasecmp.c" – Mat

+2

strncasecmp'''C'는 함수가 아니라 C 인''++ 검색. 더 적절하게 태그를 지정하고 시도하십시오. –

답변

5

편집 당신은 당신이 뭔가에서 백 포트를하고있는 것 같습니다 질문을 업데이트 한 후 발견이 UNIX 용으로 포팅 된 것이 아니라 Windows 용으로 원래 작성된 것입니까? _tcsnicmp은 실제로 Windows에서 호출하는 함수입니다 (위의 링크 참조). Windows에서 strncasecmp (또는 자신의 버전)으로 다시 리디렉션 할 필요가 없습니다.

Windows에서 (적어도 Microsoft 컴파일러를 사용하면 플랫폼이 실제로 여기에 문제가되지 않음) strnicmp family of functions을 대신 사용할 수 있습니다. Visual Studio와 함께 배포되고 "\ VC \ crt \ src"아래에 설치되어있는 CRT 소스 코드를 제안하거나 조사한 다른 사람들이 소스 코드를 google해야합니다.

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 소스 코드가 설치 디렉토리에 있습니다. 이 디렉토리에

봐 : (설치 비주얼 스튜디오 경로) \ VC \ CRT의 \의 SRC이 디렉토리에있는 모든 * cmp.c 파일 (예 : wcsnicmp.c, strnicmp.c 등의

봐 ..)

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

코드에서 수행하는 작업과 해당 질문에 대한 답변에 대한 설명을 포함하십시오. 코드 스 니펫을 답으로 얻는다면 그 코드 스 니펫으로 무엇을해야할지 모를 수 있습니다. 답은 OP와 미래 방문자에게 문제를 디버그하고 수정하는 방법에 대한 지침을 제공해야합니다. 코드 뒤에있는 아이디어가 무엇인지 지적하면 문제를 이해하고 솔루션을 적용하거나 수정하는 데 큰 도움이됩니다. – Palec