c - Kildekode for strncasecmp () funktion

Indlæg af Hanne Mølgaard Plasc

Problem



Har nogen nogen kilde til denne funktion? Jeg synes, det er tilgængeligt under Unix, men jeg bruger Windows.





Selvfølgelig prøvede jeg google først, men haven ikke fundet løsning, også funktion fra 'strncasecmp.c' tager kun 2 i stedet for 3 parametre.


Kan ikke give meget mere information, da det ikke er min kode.


Sådan bruger han det:


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

Bedste reference


EDIT Når du har opdateret dit spørgsmål, ser det ud til at du gør en backport fra noget, der var originalt skrevet til Windows, end portet til UNIX og nu tilbage til Windows?!?. \_tcsnicmp er faktisk funktionen til at ringe til Windows (se mit link ovenfor). Der er ingen mening om at omdirigere det tilbage til strncasecmp (eller din egen version deraf) på Windows.


Under Windows (ved hjælp af Microsoft Compilers i det mindste, er platformen ikke rigtig problemet her), kan du i stedet bruge strnicmp-familien af ​​funktioner. Hvis du stadig har brug for kildekoden enten google for det, som andre har foreslået eller kigget på CRT-kildekoden, der distribueres med Visual Studio og installeret under '\ VC \ crt \ src'. [6]

Andre referencer 1


#define strncasecmp(x,y,z) \_strnicmp(x,y,z)

Andre referencer 2


Jeg har fundet det her [7]


#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 == '' || *s2 == '')
    break;
      s1++;
      s2++;
    }

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

Andre referencer 3


Hvis du har installeret Visual C ++, er CRT-kildekoden i din installationskatalog.


Kig i denne mappe: (Sti til Visual Studio Installer) \ VC \ crt \ src


Se på alle * cmp.c-filerne i denne mappe (fx wcsnicmp.c, strnicmp.c osv ..)