Hasznos C függvények ;)


WStrTok


A standard könyvtárban található strtok() átirata a hívó által biztosított puferrel végzett munkára.

Replace of strtok() for use caller's buffer

 

Sample Source of using:


char * sStr = ”AAA, BBB \t CCC”;
char ** sSteps = &sStr;

char * sAAA = WStrTok(sSteps, ",;\t\r\n ");
char * sBBB = WStrTok(sSteps, ",;\t\r\n ");
char * sCCC = WStrTok(sSteps, ",;\t\r\n ");

sRet = WStrConcat(sCCC, ".", sBBB, ".", sAAA);
// return: ”CCC.BBB.AAA”


//---------------------------------------------------
char * NamesList = ”Joe, Bill,\t Ben\n Greg; Titiana”;
char * sName;
char ** ptrNamesList = &NamesList;

while ((sName = WStrTok(ptrMNamesList, " \n\r\t,;")) != NULL)
{ // loop: while exists new names in list
puts(sName);
puts(”\n”);
};



Source of WstrTok.c

char * WStrTok(char **sTextPtr, const char *sTokens)
{  // (c) freeware from eMeL (Laszlo Moravecz) / downloaded from www.emel.hu/c_lang : Don't delete this line!
  if ((sTextPtr == NULL) || (*sTextPtr == NULL))
  {
    return NULL;
  }

  //

  char * sText = *sTextPtr;
  
  if (*sText)
  {
    char * sRet = sText;

    while (*sText)
    {
      if (strchr(sTokens, *sText))
      { // Found a token-end-marker, Set EOF for return founded token
        *sText = 0;
        sText++;

        while (*sText)
        { // Skip unnecessary token-end-markers before call again
          if (strchr(sTokens, *sText))
          {
            sText++;
          }
          else
          {
            break;
          }
        }

        break ;
      }
      else
      {
        sText++;
      }
    }

    *sTextPtr = sText;
    return sRet;
  }
  else
  {
    return NULL;
  }
}

Ezek a kódok szabadon felhasználhatók.
Remélem segítséget nyújtottam munkájához.
FreeWare C language code

Freeware from eMeL and Laszlo Moravecz

Last mod : 2004.10.13